问题描述
如何查询最近7天内数据?
解决
select * from xxx where datediff(d, d_createdate, getdate()) < 7
核心为 datediff 函数,获取两个日期之间的时间。
datediff(datepart,startdate,enddate)
日期部分(datepart) | 全名 | 缩写 |
---|---|---|
年 | year | yy, yyyy |
季度 | quarter | qq, q |
月 | month | mm, m |
一年中的日期 | dayofyear | dy, y |
日 | day | dd, d |
周 | week | wk, ww |
小时 | hour | hh |
分钟 | minute | mi, n |
秒 | second | ss, s |
毫秒 | millisecond | ms |
微妙 | microsecond | mcs |
纳秒 | nanosecond | ns |
dayofyear 和 day 在 datediff 函数中的结果是相同的。datediff 函数在类型为毫秒,微妙,纳秒时可能超出 int 的最大范围,所以SqlServer还提供了 datediff_big 函数
datediff_big(datepart,startdate,enddate)
但在类型为纳秒时也可能超出 bigint 的最大范围。
参考
DATEDIFF (Transact-SQL)
SQL Server DATEDIFF() 函数
SQLServer 日期函数大全
SQL Server DATEDIFF: How's dayofyear different from day?