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