1. 程式人生 > >SQL SERVER中查詢當天、當月、當年資料的SQL語句

SQL SERVER中查詢當天、當月、當年資料的SQL語句

在SQL SERVER中如果需要查詢出當天、當月和當年的資料,可以通過DATEDIFF函式計算相差時間以獲取正確的過濾條件。主要思路是通過DATEDIFF函式計算當前日期與資料日期的天數差、月份差和年數差,如果相差值為0,則表示為當前時間的資料,大於0或小於0則表示資料的時間比當前時間更加早或晚。

函式語法:DATEDIFF ( datepart , startdate , enddate )。引數datepart表示日期計算單位,常用有d,m,yyyy這3個值(d-天數,m-月份,yyyy-年份)。引數startdate表示計算的開始日期,簡單點說是被減數,引數enddate表示結束日期,計算方式是enddate 中減去 startdate,值的單位取決於傳入的datepart引數。

假設當前資料庫中有張Article表,表中包含日期欄位InputDate,獲取當月資料的SQL語句如下:

SELECT COUNT(*) FROM [Article] WHERE DATEDIFF(m,[InputDate],GETDATE())=0

如果要獲取當天和當年的資料,只要修改函式對應的datepart引數即可。

這裡可以通過這些小范例舉一反三,更加理解此函式的用法:

--計算當前日期與2015-12-21相差幾天
PRINT DATEDIFF(d,'2015-12-21',GETDATE())
--計算當前日期與2015-12相差幾月
PRINT DATEDIFF(m,'2015-11-02',GETDATE())
--計算當前日期與2015年相差幾年
PRINT DATEDIFF(yyyy,'2015-06-07',GETDATE())

檢視官方文件以獲取更加詳細的說明,部分文件截圖如下:

使用DATEDIFF函式計算當天當月當年

詳細引數說明:

datepart引數說明截圖

startdate和enddate引數說明截圖