萬盛學電腦網

 萬盛學電腦網 >> 數據庫 >> mssql數據庫 >> SQL Server如何進行時間比較的代碼實例

SQL Server如何進行時間比較的代碼實例

例子:

select count(*) from table where DATEDIFF ([second], '2004-09-18 00:00:18', '2004-09-18 00:00:19')  > 0

說明

select  DATEDIFF(day, time1 , time2)    對應示例語句如下


select  DATEDIFF(day, '2010-07-23 0:41:18', '2010-07-23 23:41:18')

time1 > time2 為負數;

time1 < time2 為正數;

[day] :只會比較 2010-07-23 忽略 0:41:18' 其他同理

以下分別:

 

年: SELECT DATEDIFF([year],time1 , time2)   返回值: -6 ,說明是後減前 與 mysql教程 相反的。

月: SELECT DATEDIFF([month], time1 , time2)


天: SELECT DATEDIFF([day], time1 , time2)


小時: SELECT DATEDIFF([hour], time1 , time2)

秒: SELECT DATEDIFF([second], time1 , time2)


通過函數GETDATE(),你可以獲得當前的日期和時間。函數GETDATE()可以用來作為DATEDIME型字段的缺省值。這對插入記錄時保存當時 的時間是有用的。要建立一個表,其中的記錄包含有當前的日期和時間,可以添加一個DATETIME型字段,指定其缺省值為函數GETDATE()的返回 值,就象這樣:

CREATE TABLE site_log (
       username VARCHAR(40),
       useractivity VARCHAR(100),
       entrydate DATETIME DEFAULT GETDATE())

轉換日期和時間
函數GETDATE()的返回值在顯示時只顯示到秒。實際上,SQL Sever內部時間可以精確到毫秒級(確切地說,可以精確到3.33毫秒)。
要得到不同格式的日期和時間,你需要使用函數CONVERT()。例如,當下面的這個語句執行時,顯示的時間將包括毫秒:

SELECT CONVERT(VARCHAR(30),GETDATE(),9)

注意例子中數字9的使用。這個數字指明了在顯示日期和時間時使用哪種日期和時間格式。當這個語句執行時,將顯示如下的日期和時間:
Nov 30 1997 3:29:55:170AM
(1 row(s) affected)

在函數CONVERT()中你可以使用許多種不同風格的日期和時間格式。下表顯示了所有的格式。

日期和時間的類型:
類型值               標准               輸出
   0                 Default           mon dd yyyy hh:miAM
   1                 USA               mm/dd/yy
   2                 ANSI              yy.mm.dd
   3                 British/French    dd/mm/yy
   4                 German            dd.mm.yy
   5                 Italian           dd-mm-yy
   6                 -                 dd mon yy
   7                 -                 mon dd,yy
   8                 -                 hh:mi:ss
   9                        Default + milliseconds--mon dd yyyy
hh:mi:ss:mmmAM(or )
   10                USA              mm-dd-yy
   11                JAPAN            yy/mm/dd
   12                ISO              yymmdd
   13                Europe           Default + milliseconds--dd mon yyyy
                                       hh:mi:ss:mmm(24h)
   14                 -                hh:mi:ss:mmm(24h)

   類型0,9,和13總是返回四位的年。對其它類型,要顯示世紀,把style值加上100。類型13和14返回24小時時鐘的時間。類型0,7,和13返回的月份用三位字符表示(用Nov代表November).

對表中所列的每一種格式,你可以把類型值加上100來顯示有世紀的年(例如,00年將顯示為2000年)。例如,要按日本標准顯示日期,包括世紀,你應使用如下的語句:

SELECT CONVERT(VARCHAR(30),GETDATE(),111)

    在這個例子中,函數CONVERT()把日期格式進行轉換,顯示為1997/11/30

抽取日期和時間
在許多情況下,你也許只想得到日期和時間的一部分,而不是完整的日期和時間。為了抽取日期的特定部分,你可以使用函數DATEPART(),象這樣:

SELECT site_name ‘Site Name’,
DATEPART(mm,site_entrydate) ‘Month Posted’ FROM site_directory

函數DATEPART()的參數是兩個變量。第一個變量指定要抽取日期的哪一部分;第二個變量是實際的數據。在這個例子中,函數DATEPART()抽取月份,因為mm代表月份。下面是這個SELECT 語句的輸出結果:

Site Name                         Month Posted
………………………………………………………………
Yahoo                              2
Microsoft                          5
Magicw3                            5
(3 row(s) affected)

   Month Posted列顯示了每個站點被查詢的月份。函數DATEPART()的返回值是一個整數。你可以用這個函數抽取日期的各個不同部分,如下表所示。

日期的各部分及其簡寫
日期部分           簡寫         

copyright © 萬盛學電腦網 all rights reserved