問題描述
如何查詢最近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?