我有一个(MySQL)如下:
SELECT DISTINCT `date`,`type` FROM `chart_data` WHERE `import_code` = 'XYZ' AND (`date` BETWEEN 'sdate' AND 'edate')
其中sdate和edate分别是我的开始日期和结束日期。这将返回从我的开始日期到结束日期的所有日期。
My Requirement:我想要的是,如果日期差异在1年内,那么所有数据都应该被检索出来,但是如果日期差异大于1年而小于2年,那么数据将间隔2天(例如:2018年1月1日、2018年1月3日、2018年1月5日等等)。同样,如果日期差异大于2年而小于3年,则数据将间隔3天(例如:2018年1月1日、2018年1月4日、2018年1月7日等)。
在MySQL中是否有任何命令可以帮助我以指定的频率跳过某些数据?
发布于 2018-02-22 09:40:23
没有任何命令或功能会给你这样的感觉。您可以尝试抓取所有数据,分配行号,然后通过在mod计算中使用时间戳来查找您感兴趣的天数。例如
select dte,ddiff
from
(
select timestampdiff(day,'2018-01-01','2018-01-02') + 1 ddiff
) d
cross join
(
select dte,@rn:=@rn + 1 rn
from dates , (select @rn:=0) r
) s
where s.rn % d.ddiff = 0 and
dte between '2018-01-01' and '2018-01-10'结果
+------------+-------+
| dte | ddiff |
+------------+-------+
| 2018-01-01 | 2 |
| 2018-01-03 | 2 |
| 2018-01-05 | 2 |
| 2018-01-07 | 2 |
| 2018-01-09 | 2 |
+------------+-------+
5 rows in set (0.00 sec)https://stackoverflow.com/questions/48909777
复制相似问题