在開發數據庫應用中,經常會遇到處理時間的問題,如查詢指定時間的記錄等。下面就這些常見的問題,結合自己的一些經驗,和大家探討一下這類問題。
首先介紹一下,SQL Server裡處理時間的幾個主要函數的用法:
getdate()函數:取得系統當前的日期和時間。返回值為datetime類型的。
用法:getdate()
例子:
select getdate() as dte,dateadd(day,-1,getdate()) as nowdat
輸出結果:
dte nowdat
--------------------------- ---------------------------
1999-11-21 19:13:10.083 1999-11-20 19:13:10.083
(1 row(s) affected)
datepart()函數:以整數的形式返回時間的指定部分。
用法:datepart(datepart,date)
參數說明:datepart時要返回的時間的部分,常用取值year、month、day、hour、minute。
date是所指定的時間。
例子:
SELECT DATEPART(month, GETDATE()) AS 'Month Number'
輸出結果:
Month Number
------------
11
(1 row(s) affected)
dateadd()函數:通過給指定的時間的指定部分加上一個整數值以返回一個新時間值。
用法:dateadd(datepart,number,date)
參數說明:datepart(同上)
date(同上)
number要增加的值,整型,可正可負,正值返回date之後的時間值,負值返回date
之前的時間值
例子:
select getdate() as today
select dateadd(day,-1,getdate())
select dateadd(day,1,getdate())
輸出:
today
---------------------------
1999-11-21 19:42:41.410
(1 row(s) affected)
yesterday
---------------------------
1999-11-20 19:42:41.410
(1 row(s) affected)
tomorrow
---------------------------
1999-11-22 19:42:41.410
(1 row(s) affected)
datediff()函數:返回兩個時間以指定時間部分來計算的差值。返回整數值。如1991-6-12和1991-6-21之間以天來算相差9天,1998-6-12和1999-6-23按年算相差1年,1999-12-1和1999-3-12按月算相差9個月
用法:datediff(darepart,date1,date2)
參數說明:datepart(同上)
date1、date2(同上date)
例子:
select datediff(month,'1991-6-12','1992-6-21') as a
輸出:
a
-----------
12
(1 row(s) affected)