2012年1月9日 星期一

[ASP] 和 [SQL] 結合處理時間小解

在開發數據庫應用中,經常會遇到處理時間的問題,
如查詢指定時間的記錄等。下面就這些常見的問題,
結合自己的一些經驗,和大家探討一下這類問題。
首先介紹一下,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)