如何查询SQL中结束日期距开始日期不超过30天的2020年后数据
SQL实现2020年后起止间隔30天内数据筛选
你现有筛选条件仅覆盖了「2020年之后」的时间范围要求,补充起止日期间隔判断即可,以下是可直接复用的写法:
注:下文默认开始日期字段名为
date_entry,结束日期为你现有代码中的date_exit,如果实际表字段名不同,直接替换对应位置的字段名即可。额外补充的非空、日期先后校验是为了过滤异常脏数据,不需要可以删掉。
- 如果你用的是MySQL/MariaDB,
DATEDIFF函数会返回两个日期相差的自然天数,直接写判断即可:
WHERE date_exit >= '2020-01-01' AND DATEDIFF(date_exit, date_entry) <= 30 AND date_entry IS NOT NULL AND date_exit >= date_entry
- 如果你用的是PostgreSQL,日期类型直接相减就能得到间隔值,用interval做单位匹配即可:
WHERE date_exit >= '2020-01-01' AND (date_exit - date_entry) <= INTERVAL '30 days' AND date_entry IS NOT NULL AND date_exit >= date_entry
- 如果你用的是SQL Server,
DATEDIFF函数需要指定时间单位参数,按天计算的写法如下:
WHERE date_exit >= '2020-01-01' AND DATEDIFF(day, date_entry, date_exit) <= 30 AND date_entry IS NOT NULL AND date_exit >= date_entry
如果业务要求只计算工作日间隔、排除法定节假日,需要额外关联你业务线维护的节假日日历表做差值计算,不属于通用日期筛选逻辑。
内容的提问来源于stack exchange,提问作者dr092
相关产品推荐
相关产品推荐

