日期和時間函式主要用來處理日期和時間值,本篇主要介紹各種日期和時間函式的功能和用法,一般的日期函式除了使用date型別的引數外,也可以使用datetime型別的引數,但會忽略這些值的時間部分。相同的,以time型別值為引數的函式,可以接受datetime型別的引數,但會忽略日期部分。
1.獲取系統當前日期的函式getDate();
getDate()函式用於返回當前資料庫系統的日期和時間,返回值的型別為datetime.
【例】select getDate() as currentTime;
2.返回UTC日期的函式UTCDATE()
UTCDATE()函式返回當前UTC(世界標準時間)日期值.
【例】select GETUTCDATE() AS UTCtime;
因為本人深處朝廷管轄範圍之內,位於東八時區,所以系統的當前時間比UTC提前8小時,所以這裡顯示的UTC時間需要減去8個小時的時差。
3.獲取天數的函式DAY(d)
DAY(d)函式用於返回指定日期的d是一個月中的第幾天,範圍從1~31,該函式在功能上等價於DATEPART(dd,d)。
【例】select DAY(‘2015-04-30 01:01:01’);
4.獲取月份的函式MONTH(d)
MONTH(d)函式用於返回指定日期d中月份的整數值。
【例】SELECT MONTH(‘2015-04-30’) AS monthValue;
5.獲取年份的函式YEAR(d)
YEAR(d)函式返回指定日期d中年份的整數值。
【例】SELECT YEAR(‘2015-04-30’),YEAR(1997-07-01);
6.獲取日期中指定部分字串值的函式DATENAME(dp,d)
DATENAME(dp,d)根據dp指定返回日期中相應部分的值,例如YEAR返回日期中的年份值,MONTH返回日期中的月份值,dp其它可以取的值有:quater,dayofyear,day,week,weekday,hour,minute,second等。
1 2 3 4 5 6 7 8 9 |
【例】SELECT DATENAME(year,'2015-04-30 01:01:01') AS yearValue; SELECT DATENAME(quater,'2015-04-30 01:01:01') AS quaterValue; SELECT DATENAME(dayofyear,'2015-04-30 01:01:01') AS dayofyearValue; SELECT DATENAME(day,'2015-04-30 01:01:01') AS dayValue; SELECT DATENAME(week,'2015-04-30 01:01:01') AS weekValue; SELECT DATENAME(weekday,'2015-04-30 01:01:01') AS weekdayValue; SELECT DATENAME(hour,'2015-04-30 01:01:01') AS hourValue; SELECT DATENAME(minute,'2015-04-30 01:01:01') AS minuteValue; SELECT DATENAME(second,'2015-04-30 01:01:01') AS secondValue; |
7.獲取日期中指定部分的整數值的函式DATEPART(dp,d)
DATEPART(dp,d)函式返回指定日期中相應的部分的整數值,dp的取值與DATETIME函式相同。
1 2 |
【例】SELECT DATEPART(year,'2015-04-30 01:01:01'),DATEPART(month,'2015-04-30 01:01:01'), DATEPART(dayofyear,'2015-04-30 01:01:01'); |
8.計算日期和時間的函式DATEADD(dp,num,d)
DATEADD(dp,num,d)函式用於執行日期的加運算,返回指定日期值加上一個時間段後的新日期。dp指定日期中進行加法運算的部分值,例如:year,month,day,hour,minute,second,millsecond等,num指定與dp相加的值,如果該值為非整數值,將捨棄該值的小數部分,d為執行加法運算的日期。
1 2 3 |
SELECT DATEADD(year,1,'2015-04-30 01:01:01') AS yearAdd, DATETIME(month ,2, '2015-04-30 01:01:01') AS weekdayAdd, DATEADD(hour,2,'2015-04-30 01:01:01') AS hourAdd; |
日期函式上面例子的指令碼:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
-時間函式 select getDate() as currentTime; select GETUTCDATE() AS UTCtime; select DAY('2015-04-30 01:01:01'); SELECT MONTH('2015-04-30')AS monthValue; SELECT YEAR('2015-04-30'),YEAR('1997-07-01'); SELECT DATENAME(year,'2015-04-30 01:01:01') AS yearValue, DATENAME(quarter,'2015-04-30 01:01:01') AS quaterValue, DATENAME(dayofyear,'2015-04-30 01:01:01') AS dayofyearValue, DATENAME(day,'2015-04-30 01:01:01') AS dayValue, DATENAME(week,'2015-04-30 01:01:01') AS weekValue, DATENAME(weekday,'2015-04-30 01:01:01') AS weekdayValue, DATENAME(hour,'2015-04-30 01:01:01') AS hourValue, DATENAME(minute,'2015-04-30 01:01:01') AS minuteValue, DATENAME(second,'2015-04-30 01:01:01') AS secondValue; SELECT DATEPART(year,'2015-04-30 01:01:01'), DATEPART(month,'2015-04-30 01:01:01'), DATEPART(dayofyear,'2015-04-30 01:01:01'); SELECT DATEADD(year,1,'2015-04-30 01:01:01') AS yearAdd, DATEADD(month ,2, '2015-04-30 01:01:01') AS weekdayAdd, DATEADD(hour,2,'2015-04-30 01:01:01') AS hourAdd; |