如何在SQL中筛选datetime1前24小时内的datetime2记录?
解决方法
你之前的查询条件只限制了datetime2不晚于datetime1加24小时,这个范围太宽泛——哪怕datetime2比datetime1早几天,也会满足这个条件,所以才会返回所有条目。
要筛选datetime2发生在datetime1前24小时内的条目,需要同时限定两个边界:datetime2要大于等于datetime1减去24小时,并且小于等于datetime1本身。
针对使用DATEADD函数的数据库(如SQL Server)
对应的WHERE子句应该是:
WHERE datetime2 >= DATEADD(HOUR, -24, datetime1) AND datetime2 <= datetime1
针对PostgreSQL
可以用INTERVAL语法计算时间范围:
WHERE datetime2 >= datetime1 - INTERVAL '24 hours' AND datetime2 <= datetime1
针对MySQL
使用DATE_ADD函数的写法:
WHERE datetime2 >= DATE_ADD(datetime1, INTERVAL -24 HOUR) AND datetime2 <= datetime1
这样就能精准筛选出datetime2落在datetime1前24小时窗口内的所有记录了。
内容的提问来源于stack exchange,提问作者Jani
相关产品推荐
相关产品推荐

