本篇文章還是學習《程式設計師的sql金典》內容的記錄,此次將講解的是sql server的時間函式。
(1)日期:表示「年-月-日」資訊的資料型別,其精度精確到「日」,其中包含了年、月、日三個資訊,比如「2008-08-08」。而無時間點的概念。在資料庫中,一般用date來表示日期型別。
表示「小時:分:秒」 資訊的資料型別,其精度精確到「秒」,其中包含了小時、分、秒三個資訊,比如「19:00:00」。而無日期的概念。在資料庫中,一般用time來表示時間型別。
表示「年-月-日 小時:分:秒」 資訊的資料型別,其精度精確到「秒」,其中包含了年、月、日、小時、分、秒六個資訊,比如「2008-08-08 08:00:00」。既包含了日期,也包含了時間點。在資料庫中,一般用datetime來表示日期時間型別。
(4)時間戳:表示比日期時間精度更高精度的時間型別。比如我們想區分表中兩條記錄插入表中的先後順序,由於資料庫操作速度非常快,如果用datetime 型別記錄輸入插入時間的話,若兩條記錄插入的時間間隔非常短的話是無法區分它們的,這時就可以使用時間戳型別。資料庫中,一般用timestamp來表示時間戳型別。
不同的資料庫系統對日期、時間、日期時間與時間戳等資料型別的支援差異性非常大,有的資料型別在有的資料庫系統中不被支援,而有的資料型別在不同的資料庫系統中表示精度和其型別名稱所暗示的精度不同,比如oracle 中的date 型別中包含時間資訊。資料庫中的日期時間函式對這些型別的支援差別是非常小的,因此在一般情況下我們將這些型別統一稱為「日期時間型別」。
getdate()函式
獲取得當前日期時間,返回的資訊是包括了日期、時間(精確到秒以後部分)的時間戳資訊。
selectgetdate() as 當前日期時間
mssql server 沒有專門提供取得當前日期、取得當前時間的函式。但是通過間接的方式也可以獲取到。主要是使用到convert()函式。
獲取當前日期的方式:
selectconvert(varchar(50) ,getdate( ), 101) as 當前日期
獲取當前日期的方式:
selectconvert(varchar(50) ,getdate(), 108) as 當前時間
dateadd (datepart , number, date )函式
用於進行日期時間的加法運算,其中datepart引數是表示日期部分的引數(比如是以日期還是以月份相加等),number引數是具體的加數,正數代表向未來日期方向加,負數代表向過去日期方向減,date引數為待計算的日期時間型別資料。
selectdateadd(month, 1, getdate())
select fbirthday, dateadd (year ,3,fbirthday) asthreeyrs,
dateadd(quarter ,20,fbirthday) as
ttqutrs,
dateadd(month ,68,fbirthday) as
sxtmonths,
dateadd(week, -
1000,fbirthday) as
thweeik
from t_person
datepart引數可以取的單位型別如下:
單位
別名
說明
year
yy,yyyy
年份quarter
qq,q
季度month
mm,m
月份dayofyear
dy,y
當年度的第幾天
daydd,d
日week
wk,ww
當年度的第幾周
weekday
dw,w
星期幾hour
hh小時
minute
mi,n
分second
ss,s
秒millisecond
ms毫秒
datediff ( datepart , startdate , enddate )函式
用於計算兩個日期時間之間的差額。其中datepart引數表示日期部分的引數(比如只比較年還是只比較月等),startdate引數為起始日期時間型別資料;enddate引數為結束日期時間型別資料。
selectdatediff(day, '
2013/12/17 21:00:00
', '
2013/12/19 10:00:00
')
select fregday,fbirthday,datediff(week, fbirthday, fregday) from t_person
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毫秒
datename(datepart,date)函式
用來獲取乙個日期的特定部分,比方只獲取年份或者是只獲取月份等。其中datepart引數是表示要返回的日期部分的引數(即如果是year的話,則返回的是具體的年份),date引數為待計算日期。
select fbirthday,datename(weekday,fbirthday),
fregday,
datename
(dw, fregday)
from t_person
datepart引數可以取的單位型別如下:
單位
別名
說明
year
yy、yyyy
年份quarter
qq, q
季度month
mm, m
月份dayofyear
dy, y
每年的某一日
daydd, d
日期week
wk, ww
星期weekday
dw工作日
hour
hh小時
minute
mi, n
分鐘second
ss, s
秒millisecond
ms毫秒
datepart (datepart,date)函式
mssql server提供另乙個函式也同樣可以實現獲取日期時間特定部分。其中datepart引數是表示要返回的日期部分的引數(即如果是year的話,則返回的是具體的年),date引數為待計算日期。
select fbirthday, datepart(dayofyear,fbirthday),
fregday,
datepart(year
, fregday)
from t_person
datepart引數可以取的單位型別如下:
單位
別名
說明
year
yy、yyyy
年份quarter
qq, q
季度month
mm, m
月份dayofyear
dy, y
每年的某一日
daydd, d
日期week
wk, ww
星期weekday
dw工作日
hour
hh小時
minute
mi, n
分鐘second
ss, s
秒millisecond
ms毫秒
注:datepart()函式的返回值是數字,而datename()函式則會將盡可能以名稱的方式做為返回值。
SqlServer 時間函式
1 getdate 取得當前日期時間 2 dateadd 標記,增量,時間 例 select dateadd year,2,getdate 當前時間增加兩年 select dateadd day,2,getdate 當前時間增加兩天 3 datepart 標記,時間 例 select datepar...
SQLSERVER時間函式
一 sql server日期時間函式 sql server中的日期與時間函式 1.當前系統日期 時間 select getdate 2.dateadd 在向指定日期加上一段時間的基礎上,返回新的 datetime 值 例如 向日期加上2天 select dateadd day,2,2004 10 1...
Sql Server時間函式
函式 定義確定性 備註dateadd datepart number,date 返回給指定日期加上乙個時間間隔後的新 datetime 值。確定datediff datepart,startdate,enddate 返回跨兩個指定日期的日期邊界數和時間邊界數。確定enddate 減去 startda...