首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在MySQL中是否有任何命令可以帮助我以指定的频率跳过某些数据?

在MySQL中是否有任何命令可以帮助我以指定的频率跳过某些数据?
EN

Stack Overflow用户
提问于 2018-02-21 15:36:11
回答 1查看 27关注 0票数 0

我有一个(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中是否有任何命令可以帮助我以指定的频率跳过某些数据?

EN

回答 1

Stack Overflow用户

发布于 2018-02-22 09:40:23

没有任何命令或功能会给你这样的感觉。您可以尝试抓取所有数据,分配行号,然后通过在mod计算中使用时间戳来查找您感兴趣的天数。例如

代码语言:javascript
复制
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'

结果

代码语言:javascript
复制
+------------+-------+
| 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)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48909777

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档