這篇文章要總結的是SQL在日期和時間處理方面的函數,總結起來,主要有以下這些函數在我們的開發過程中使用得比較多的。
1,獲取當前系統時間
2,DATEADD函數
3,DATEDIFF函數
4,DATEPART函數
5,YEAR,MONTH和DAY函數
6,DATENAME函數
7,ISDATE函數
獲取當前系統時間獲取當前系統時間的函數有很多,但是最常用就兩個,CURRENT_TIMESTAMP和GETDATE。它們返回的日期和時間格式完全相同,但是因為CURRENT_TIMESTAMP是標準SQL,所以更推薦使用它。
SQL查詢代碼:
SELECT GETDATE() AS [GETDATE], CURRENT_TIMESTAMP AS [CURRENT_TIMESTAMP];
查詢結果:
我們可以看到,它們返回的日期時間完全相同。
DATEADD函數DATEADD函數可以將指定日期的部分作為單位,為輸入的日期和時間值增指定的數量。它的語法形式為:DATEADD(part,n,dt_val)
例如,以下代碼為“2014年7月26日”增加1年。
SELECT DATEADD(YEAR,1,'20140726');
查詢結果:
DATEDIFF函數返回兩個日期和時間之間相差的指定部分的計數。它的語法形式:DATEDIFF(part,dt_val1,dt_val2)
例如,以下代碼返回兩個值之間相差的天數。
SELECT DATEDIFF(DAY,'20130726','20140726');
查詢結果:
我們可以看到,它們相關了365天。
DATEPART函數DATEPART函數返回一個表示給定日期和時間值的指定部分的整數。語法:DATEPART(part,dt_val)
例如,以下代碼返回輸入值的月份部分。
SELECT DATEPART(MONTH,'20140726');
查詢結果:
代碼返回的當前日期的月份是7月。
YEAR,MONTH和DAY函數YEAR,MONTH和DAY函數是DATEPART函數的簡略版本。它們分別返回一個代表輸入日期和時間值中年,月,日部分的整數。語法:YEAR(dt_val),MONTH(dt_val),DAY(dt_val)
例如,以下代碼提取輸入值的年,月,日部分。
USE TSQLFundamentals2008;GOSELECT YEAR('20140726') AS theyear, MONTH('20140726') AS themonth, DAY('20140726') AS theday;
查詢結果:
DATENAME函數返回一個給定日期和時間值的指定部分的字符串。語法為:DATENAME(part,dt_val)
例如,以下代碼返回給定輸入日期和時間值的月份名稱字符串。
SELECT DATENAME(MONTH,'20140726');
查詢結果:
ISDATE函數接受一個字符串作為輸入,如果能把這個字符串轉換為日期和時間數據類型的值,則返回1,如果不能,則返回0。它的語法:ISDATE(string)
例如,以下代碼返回1:
以下代碼則返回0:
USE TSQLFundamentals2008;GO-- 返回1,可以正常轉換SELECT ISDATE('20090212');-- 返回0,因為2月沒有30,所以轉換失敗SELECT ISDATE('20090230');
查詢結果:
1和0可以很好地轉換成C#里的true和false。
新聞熱點
疑難解答