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