Ⅰ sql Server 中時間函數
DATEADD
在向指定日期加上一段時間的基礎上,返回新的 datetime 值。
語法
DATEADD ( datepart , number, date )
DATEDIFF
返回跨兩個指定日期的日期和時間邊界數。
語法
DATEDIFF ( datepart , startdate , enddate )
DATEPART
返回代表指定日期的指定日期部分的整數。
語法
DATEPART ( datepart , date )
DATENAME
返回代表指定日期的指定日期部分的字元串。
語法
DATENAME ( datepart , date )
比較 DATEADD 和 DATEDIFF
DATEADD 函數向指定日期添加一段時間間隔。例如,如果 titles 表中所有書籍的發行日期都推遲三天,則可使用以下語句獲得新的發行日期:
USE pubs
SELECT DATEADD(day, 3, pubdate)
FROM titles
如果日期參數的數據類型是 smalldatetime,則結果的數據類型也是 smalldatetime。可以使用 DATEADD 對 smalldatetime 值添加秒或毫秒,但只有當 DATEADD 返回的結果日期至少改變了 1 分鍾時,這樣做才有意義。
DATEDIFF 函數計算指定的兩個日期中第二個日期與第一個日期之間各日期部分相差的時間量。換句話說,它得出兩個日期之間的間隔。結果是等於 date2 - date1 的帶符號整數值,以各日期部分為單位。
下面的查詢使用日期 1995 年 11 月 30 日,並得出 pubdate 和該日期之間相差的天數。
USE pubs
SELECT DATEDIFF(day, pubdate, 'Nov 30 1995')
FROM titles
對於 titles 中 pubdate 為 1995 年 10 月 21 日的行,上述查詢生成的結果為 40。(10 月 21 日和 11 月 30 日之間相差 40 天。)要計算以月為單位的間隔,請使用以下查詢:
USE pubs
SELECT interval = DATEDIFF(month, pubdate, 'Nov 30 1995')
FROM titles
該查詢對 pubdate 值在 10 月的行生成的值為 1,對 pubdate 值在 6 月的行生成的值為 5。
若 DATEDIFF 函數中的第一個日期晚於指定的第二個日期,則產生的結果為負數。由於 titles 中有兩行使用 GETDATE 函數指派 pubdate 的值,所以這些值被設置為 pubs 資料庫的創建日期,這樣在前面的兩個查詢中這兩行返回負數。
如果一個或兩個日期參數是 smalldatetime 值,它們將在內部轉換為 datetime 值進行計算。為了進行計算,smalldatetime 值中的秒和毫秒將自動設置為 0。
比較 DATEPART 和 DATENAME
DATEPART 和 DATENAME 函數將 datetime 值的指定部分(年、季度、天、小時等)生成為整數值或 ASCII 字元串。由於 smalldatetime 只能精確到分鍾,所以在這兩個函數中使用 smalldatetime 值時,返回的秒和毫秒部分總是為零。
下面的示例假定日期為 5 月 29 日:
SELECT DATEPART(month, GETDATE())
下面是結果集:
------------
5
(1 row(s) affected)
SELECT DATENAME(month, GETDATE())
下面是結果集:
------------
May
(1 row(s) affected)
具體可以參考SQL Server聯機叢書(安裝SQLServer時自動的幫助)
Ⅱ sql語句日期時間函數
可以將vs_date 使用時間函數 加上20個小時 和 37個小時 就可以了
然後使用between and 作為查詢條件
如:
numtodsinterval函數 numtodsinterval(20,'HOUR')
還是使用numtodsinterval函數 參數second ,將vs_date截取到日期 ,在應用這個函數 構造開始和結束
就可以了
Ⅲ SQL Server中的時間函數有那些,最好舉例說明
比較常用的時間函數有DateAdd,DateDiff,DateName,DatePart,Day,Getdate,Month,Year,GetUTCDate這幾個函數。
以下依次說明,如需更詳細說明請參考SQL幫助文檔:
1. DateAdd函數
在向指定日期加上一段時間的基礎上,返回新的 datetime 值。
語法
DATEADD ( datepart , number, date )
示例
此示例列印出 pubs 資料庫中標題的時間結構的列表。此時間結構表示當前發布日期加上 21 天。
SELECT DATEADD(day, 21, pubdate) AS timeframe
FROM titles
2.DateDiff函數
返回跨兩個指定日期的日期和時間邊界數。
語法
DATEDIFF ( datepart , startdate , enddate )
示例
此示例確定在 pubs 資料庫中標題發布日期和當前日期間的天數。
SELECT DATEDIFF(day, pubdate, getdate()) AS no_of_days
FROM titles
3.DateName函數
返回代表指定日期的指定日期部分的字元串。
語法
DATENAME ( datepart , date )
示例
此示例從 GETDATE 返回的日期中提取月份名。
SELECT DATENAME(month, getdate()) AS 'Month Name'
4.DatePart函數
返回代表指定日期的指定日期部分的整數。
語法
DATEPART ( datepart , date )
示例
此示例顯示 GETDATE 及 DATEPART 的輸出。
SELECT DATEPART(month, GETDATE()) AS 'Month Number'
5.Day函數
返回代表指定日期的天的日期部分的整數。
語法
DAY ( date )
示例
此示例返回從日期 03/12/1998 後的天數。
SELECT DAY('03/12/1998') AS 'Day Number'
6.GetDate函數
按 datetime 值的 Microsoft® SQL Server™ 標准內部格式返回當前系統日期和時間。
語法
GETDATE ( )
示例
下面的示例得出當前系統日期和時間:
SELECT GETDATE()
7.Month函數
返回代表指定日期月份的整數。
語法
MONTH ( date )
示例
下面的示例從日期 03/12/1998 中返回月份數。
SELECT "Month Number" = MONTH('03/12/1998')
8.Year函數
返回表示指定日期中的年份的整數。
語法
YEAR ( date )
示例
下例從日期 03/12/1998 中返回年份數。
SELECT "Year Number" = YEAR('03/12/1998')
9.GetUTCDate函數
返回表示當前 UTC 時間(世界時間坐標或格林尼治標准時間)的 datetime 值。當前的 UTC 時間得自當前的本地時間和運行 SQL Server 的計算機操作系統中的時區設置。
語法
GETUTCDATE()
示例
下例從日期 03/12/1998 中返回年份數。
SELECT GETUTCDATE()
Ⅳ 在sql中想插入一個空的date類型值,怎麼寫
1.首先,在桌面上單擊「ManagementStudio」圖標。
Ⅳ 請教高手列舉出sql語句中所有有關日期 、時間的用法 謝謝
SQL語句中時間函數的應用Date 函數
描述:返回當前系統日期。
語法Date
DateAdd 函數
描述:返回已添加指定時間間隔的日期。
語法DateAdd(interval, number, date)
interval: 必選。字元串表達式,表示要添加的時間間隔。有關數值,請參閱「設置」部分。
number: 必選。數值表達式,表示要添加的時間間隔的個數。數值表達式可以是正數(得到未來的日期)或負數(得到過去的日期)。
date: 必選。Variant 或要添加 interval 的表示日期的文字。
interval 參數可以有以下值:
yyyy (年) 、q (季度) 、m (月) 、y (一年的日數) 、d (日) 、w (一周的日數) 、ww (周) 、h (小時) 、n (分鍾) 、s (秒)
說明:可用 DateAdd 函數從日期中添加或減去指定時間間隔。例如可以使用 DateAdd 從當天算起 30 天以後的日期或從現在算起 45分鍾以後的時間。要向 date 添加以「日」為單位的時間間隔,可以使用「一年的日數」(「y」)、「日」(「d」)或「一周的日數」(「w」)。
DateAdd 函數不會返回無效日期。如下示例將 95 年 1 月 31 日加上一個月:
NewDate = DateAdd("m", 1, "31-Jan-95")
在這個例子中,DateAdd 返回 95 年 2 月 28 日,而不是 95 年 2 月 31 日。如果 date 為 96 年 1 月 31 日,則返回 96 年 2 月 29 日,這是因為 1996 是閏年。
如果計算的日期是在公元 100 年之前則會產生錯誤。
如果 number 不是 Long 型值,則在計算前四捨五入為最接近的整數。
DateDiff 函數
描述:返回兩個日期之間的時間間隔。
語法DateDiff(interval, date1, date2 [,firstdayofweek[, firstweekofyear> )
interval: 必選。字元串表達式,表示用於計算 date1 和 date2 之間的時間間隔。有關數值,請參閱「設置」部分。
date1, date2: 必選。日期表達式。用於計算的兩個日期。
firstdayofweek: 可選。指定星期中第一天的常數。如果沒有指定,則默認為星期日。有關數值,請參閱「設置」部分。
firstweekofyear: 可選。指定一年中第一周的常數。如果沒有指定,則默認為 1 月 1 日所在的星期。有關數值,請參閱「設置」部分。
interval 參數可以有以下值:
yyyy (年) 、q (季度) 、m (月) 、y (一年的日數) 、d (日) 、w (一周的日數) 、ww (周) 、h (小時) 、n (分鍾) 、s (秒)
firstdayofweek 參數可以有以下值:
(以下分別為:常數 值 描述)
vbUseSystem 0 使用區域語言支持 (NLS) API 設置。
vbSunday 1 星期日(默認)
vbMonday 2 星期一
vbTuesday 3 星期二
vbWednesday 4 星期三
vbThursday 5 星期四
vbFriday 6 星期五
vbSaturday 7 星期六
firstweekofyear 參數可以有以下值:
(以下分別為:常數 值 描述)
vbUseSystem 0 使用區域語言支持 (NLS) API 設置。
vbFirstJan1 1 由 1 月 1 日所在的星期開始(默認)。
vbFirstFourDays 2 由在新年中至少有四天的第一周開始。
vbFirstFullWeek 3 由在新的一年中第一個完整的周開始。
說明DateDiff 函數用於判斷在兩個日期之間存在的指定時間間隔的數目。例如可以使用 DateDiff 計算兩個日期相差的天數,或者當天到當年最後一天之間的星期數。
要計算 date1 和 date2 相差的天數,可以使用「一年的日數」(「y」)或「日」(「d」)。當 interval為「一周的日數」(「w」)時,DateDiff 返回兩個日期之間的星期數。如果 date1 是星期一,則 DateDiff 計算到 date2之前星期一的數目。此結果包含 date2 而不包含 date1。如果 interval 是「周」(「ww」),則 DateDiff函數返回日歷表中兩個日期之間的星期數。函數計算 date1 和 date2 之間星期日的數目。如果 date2 是星期日,DateDiff將計算 date2,但即使 date1 是星期日,也不會計算 date1。
如果 date1 晚於 date2,則 DateDiff 函數返回負數。
firstdayofweek 參數會對使用「w」和「ww」間隔符號的計算產生影響。
如果 date1 或 date2 是日期文字,則指定的年度會成為日期的固定部分。但是如果 date1 或 date2 被包括在引號 (" ")中並且省略年份,則在代碼中每次計算 date1 或 date2 表達式時,將插入當前年份。這樣就可以編寫適用於不同年份的程序代碼。
在 interval 為「年」(「yyyy」)時,比較 12 月 31 日和來年的 1 月 1 日,雖然實際上只相差一天,DateDiff 返回 1 表示相差一個年份。
DatePart 函數
描述:返回給定日期的指定部分。
語法DatePart(interval, date[, firstdayofweek[, firstweekofyear> )
DatePart: 函數的語法有以下參數:
interval: 必選。字元串表達式,表示要返回的時間間隔。有關數值,請參閱「設置」部分。
date: 必選。要計算的日期表達式。
firstdayof week: 可選。指定星期中的第一天的常數。如果沒有指定,則默認為星期日。有關數值,請參閱「設置」部分。
firstweekofyear: 可選。指定一年中第一周的常數。如果沒有指定,則默認為 1 月 1 日所在的星期。有關數值,請參閱「設置」部分。
interval 參數可以有以下值:
yyyy (年) 、q (季度) 、m (月) 、y (一年的日數) 、d (日) 、w (一周的日數) 、ww (周) 、h (小時) 、n (分鍾) 、s (秒)
firstdayofweek 參數可以有以下值:
(以下分別為:常數 值 描述)
vbUseSystem 0 使用區域語言支持 (NLS) API 設置。
vbSunday 1 星期日(默認)
vbMonday 2 星期一
vbTuesday 3 星期二
vbWednesday 4 星期三
vbThursday 5 星期四
vbFriday 6 星期五
vbSaturday 7 星期六
firstweekofyear 參數可以有以下值:
(以下分別為:常數 值 描述)
vbUseSystem 0 使用區域語言支持 (NLS) API 設置。
vbFirstJan1 1 由 1 月 1 日所在的星期開始(默認)。
vbFirstFourDays 2 由在新年中至少有四天的第一周開始。
vbFirstFullWeek 3 由在新的一年中第一個完整的周(不跨年度)開始。
說明DatePart 函數用於計算日期並返回指定的時間間隔。例如使用 DatePart 計算某一天是星期幾或當前的時間。
firstdayofweek 參數會影響使用「w」和「ww」間隔符號的計算。
如果 date 是日期文字,則指定的年度會成為日期的固定部分。但是如果 date 被包含在引號 (" ") 中,並且省略年份,則在代碼中每次計算 date 表達式時,將插入當前年份。這樣就可以編寫適用於不同年份的程序代碼。
DateSerial 函數
描述:對於指定的年、月、日,返回 Date 子類型的 Variant。
語法DateSerial(year, month, day)
year: 從 100 到 9999 之間的數字或數值表達式。
month: 任意數值表達式。
day: 任意數值表達式。
說明:要指定日期,如 1991 年 12 月 31 日,DateSerial 函數中每個參數的取值范圍都應該是可接受的;即日的取值應在 1 和31 之間,月的取值應在 1 和 12 之間。但是,也可以使用表示某日之前或之後的年、月、日數目的數值表達式為每個參數指定相對日期。
以下樣例中使用了數值表達式代替絕對日期。在這里,DateSerial 函數返回 1990 年 8 月 1 日之前十年 (1990 - 10) 零兩個月 (8 - 2) 又一天 (1 - 1) 的日期:即 1980 年 5 月 31 日。
DateSerial(1990 - 10, 8 - 2, 1 - 1)
對於 year 參數,若取值范圍是從 0 到 99,則被解釋為 1900 到 1999 年。對於此范圍之外的 year 參數,則使用四位數字表示年份(例如 1800 年)。
當任何一個參數的取值超出可接受的范圍時,則會適當地進位到下一個較大的時間單位。例如,如果指定了 35天,則這個天數被解釋成一個月加上多出來的日數,多出來的日數取決於其年份和月份。但是如果參數值超出 -32,768 到 32,767的范圍,或者由三個參數指定(無論是直接還是通過表達式指定)的日期超出了可以接受的日期范圍,就會發生錯誤。
Datevalue 函數
描述:返回 Date 子類型的 Variant。
語法datevalue(date)
date 參數應是字元串表達式,表示從 100 年 1 月 1 日到 9999 年 12 月 31 日中的一個日期。但是,date 也可以是表示上述范圍內的日期、時間或日期時間混合的任意表達式。
說明:如果 date 參數包含時間信息,則 Datevalue 不會返回時間信息。但是如果 date 包含無效的時間信息(如 "89:98"),就會出現錯誤。
如果 date 是某一字元串,其中僅包含由有效的日期分隔符分隔開的數字,則 Datevalue將會根據為系統指定的短日期格式識別月、日和年的順序。Datevalue還會識別包含月份名稱(無論是全名還是縮寫)的明確日期。例如,除了能夠識別 12/30/1991 和 12/30/91 之外,Datevalue還能識別 December 30, 1991 和 Dec 30, 1991。
如果省略了 date 的年份部分,Datevalue 將使用計算機系統日期中的當前年份。
Day 函數
描述:返回 1 到 31 之間的一個整數(包括 1 和31),代表某月中的一天。
語法Day(date)
date 參數是任意可以代表日期的表達式。如果 date 參數中包含 Null,則返回 Null。
FormatDateTime 函數
描述:返回表達式,此表達式已被格式化為日期或時間。
語法:FormatDateTime(Date[,NamedFormat])
Date: 必選。要被格式化的日期表達式。
NamedFormat: 可選。指示所使用的日期/時間格式的數值,如果省略,則使用 vbGeneralDate。
NamedFormat 參數可以有以下值:
(以下分別為:常數 值 描述)
vbGeneralDate 0 顯示日期和/或時間。如果有日期部分,則將該部分顯示為短日期格式。如果有時間部分,則將該部分顯示為長時間格式。如果都存在,則顯示所有部分。
vbLongDate 1 使用計算機區域設置中指定的長日期格式顯示日期。
vbShortDate 2 使用計算機區域設置中指定的短日期格式顯示日期。
vbLongTime 3 使用計算機區域設置中指定的時間格式顯示時間。
vbShortTime 4 使用 24 小時格式 (hh:mm) 顯示時間。
Hour 函數
描述:返回 0 到 23 之間的一個整數(包括 0 和 23),代表一天中的某一小時。
語法:Hour(time)
time 參數是任意可以代表時間的表達式。如果 time 參數中包含 Null,則返回 Null。
Minute 函數
描述:返回 0 到 59 之間的一個整數(包括 0 和59),代表一小時內的某一分鍾。
語法:Minute(time)
time 參數是任意可以代表時間的表達式。如果 time 參數包含 Null,則返回 Null。
Month 函數
描述:返回 1 到 12 之間的一個整數(包括 1 和 12),代表一年中的某月。
語法:Month(date)
date 參數是任意可以代表日期的表達式。如果 date 參數中包含 Null,則返回 Null。
MonthName 函數
描述:返回表明指定月份的字元串。
語法:MonthName(month[, abbreviate])
month: 必選。月份的數值定義。例如,一月是 1,二月是 2,以此類推。
abbreviate: 可選。Boolean 值,表明月份名稱是否簡寫。如果省略,默認值為 False,即不簡寫月份名稱。
Now 函數
描述:根據計算機系統設定的日期和時間返回當前的日期和時間值。
語法:Now
Second 函數
描述:返回 0 到 59 之間的一個整數(包括 1 和 59),代表一分鍾內的某一秒。
語法:Second(time)
time 參數是任意可以代表時間的表達式。如果 time 參數中包含 Null,則返回 Null。
Time 函數
描述:返回 Date 子類型 Variant,指示當前系統時間。
語法:Time
TimeSerial 函數
描述:返回一個 Date 子類型的 Variant,含有指定時、分、秒的時間。
語法:TimeSerial(hour, minute, second)
hour: 其值為從 0 (12:00 A.M.) 到 23 (11:00 P.M.) 的數值或數值表達式。
minute: 任意數值表達式。
second: 任意數值表達式。
說明:要指定一時刻,如 11:59:59,TimeSerial 的參數取值應在可接受的范圍內;也就是說,小時應介於 0-23 之間,分和秒應介於0-59之間。但是,可以使用數值表達式為每個參數指定相對時間,這一表達式代表某時刻之前或之後的時、分或秒數。以下樣例中使用了表達式代替絕對時間數。TimeSerial 函數返回中午之前六小時 (12 - 6) 十五分鍾的時間 (-15),即 5:45:00 A.M.。
TimeSerial(12 - 6, -15, 0)
當任何一個參數的取值超出可接受的范圍時,它會正確地進位到下一個較大的時間單位中。例如,如果指定了 75分鍾,則這個時間被解釋成一小時十五分鍾。但是,如果任何一個參數值超出 -32768 到 32767的范圍,就會導致錯誤。如果使用三個參數直接指定的時間或通過表達式計算出的時間超出可接受的日期范圍,也會導致錯誤。
Timevalue 函數
描述:返回包含時間的 Date 子類型的 Variant。
語法:Timevalue(time)
time參數通常是代表從 0:00:00 (12:00:00 A.M.) 到 23:59:59 (11:59:59 P.M.) 的字元串表達式(包括0:00:00 和 23:59:59)。不過,time 也可以是代表該范圍內任何時間的表達式。如果 time 參數包含 Null,則返回Null。
說明:可以採用 12 或 24 小時時鍾格式輸入時間。例如 "2:24PM" 和 "14:24" 都是有效的 time 參數。
如果 time 參數包含日期信息, Timevalue 函數並不返回日期信息。然而,如果 time 參數包含無效的日期信息,則會出現錯誤。
Weekday 函數
描述:返回代表一星期中某天的整數。
語法:Weekday(date, [firstdayofweek])
date: 可以代表日期的任意表達式。如果 date 參數中包含 Null,則返回 Null。
firstdayofweek: 指定星期中第一天的常數。如果省略,默認使用 vbSunday。
firstdayofweek 參數有如下設置:
(以下分別為:常數 值 描述)
vbUseSystem 0 使用區域語言支持 (NLS) API 設置。
vbSunday 1 星期日
vbMonday 2 星期一
vbTuesday 3 星期二
vbWednesday 4 星期三
vbThursday 5 星期四
vbFriday 6 星期五
vbSaturday 7 星期六
Weekday 函數返回如下值:
(以下分別為:常數 值 描述)
vbSunday 1 星期日
vbMonday 2 星期一
vbTuesday 3 星期二
vbWednesday 4 星期三
vbThursday 5 星期四
vbFriday 6 星期五
vbSaturday 7 星期六
WeekdayName 函數
描述:返回一個字元串,表示星期中指定的某一天。
語法:WeekDayName(weekday, abbreviate, firstdayofweek)
weekday: 必選。星期中某天的數值定義。各天的數值定義取決於 firstdayofweek 參數設置。
abbreviate: 可選。Boolean 值,指明是否縮寫表示星期各天的名稱。如果省略, 默認值為 False,即不縮寫星期各天的名稱。
firstdayofweek: 可選。指明星期第一天的數值。關於數值,請參閱「設置」部分。
firstdayofweek 參數有以下值:
(以下分別為:常數 值 描述)
vbUseSystem 0 使用區域語言支持 (NLS) API 設置。
vbSunday 1 星期日(默認)
vbMonday 2 星期一
vbTuesday 3 星期二
vbWednesday 4 星期三
vbThursday 5 星期四
vbFriday 6 星期五
vbSaturday 7 星期六
Year 函數
描述:返回一個代表某年的整數。
語法:Year(date)
date 參數是任意可以代表日期的參數。如果 date 參數中包含 Null,則返回 Null
Ⅵ sql中日期函數的用法
1.DateAdd ( I , N , D )
將一個日期加上一段期間後的日期。 I :設定一個日期( Date )所加上的一段期間的單位。譬如 interval="d" 表示 N的單位為日。 I的設定值如下:
yyyy Year 年
q Quarter 季
m Month 月
d Day 日
w Weekday 星期
h Hour 時
n Minute 分
s Second 秒
N :數值表達式,設定一個日期所加上的一段期間,可為正值或負值,正值表示加(結果為 >date 以後的日期),負值表示減(結果為 >date 以前的日期)。
D :待加減的日期。
例子: DateAdd ( "m" , 1 , "31-Jan-98")
結果: 28-Feb-98
說明:將日期 31-Jan-98 加上一個月,結果為 28-Feb-98 而非 31-Fe-98 。
例子: DateAdd ( "d" , 20 , "30-Jan-99")
結果: 1999/2/9
說明:將一個日期 30-Jan-99 加上 20 天後的日期。
2.Day( 日期的字元串或表達式 )
傳回日期的「日」部份。
例子: Day(" 12/1/1999 ")
結果: 1
3.DateDiff (I , D1 , D2[,FW[,FY]])
計算兩個日期之間的期間。
I :設定兩個日期之間的期間計算之單位。譬如 >I="m" 表示計算的單位為月。 >I 的設定值如:
yyyy > Year 年
q Quarter 季
m Month 月
d Day 日
w Weekday 星期
h Hour 時
n Minute 分
s Second 秒
D1 ,D2:計算期間的兩個日期表達式,若 >date1 較早,則兩個日期之間的期間結果為正值;若 >date2 較早, 則結果為負值。
FW :設定每周第一天為星期幾, 若未設定表示為星期天。 >FW 的設定值如下:
0 使用 >API 的設定值。
1 星期天
2 星期一
3 星期二
4 星期三
5 星期四
6 星期五
7 星期六
FY :設定一年的第一周, 若未設定則表示一月一日那一周為一年的第一周。 >FY 的設定值如下:
0 使用 >API 的設定值。
1 一月一日那一周為一年的第一周
2 至少包括四天的第一周為一年的第一周
3 包括七天的第一周為一年的第一周
例子: DateDiff ("d","25-Mar-99 ","30-Jun-99 ")
結果: 97
說明:顯示兩個日期之間的期間為 97 天
想查詢2007年2月9日的付款流水有單筆交易出現多張小票號的情況的小票號
這個要看一下你的表結構是什麼樣的啊?
Ⅶ sql 日期、時間函數的使用
1 select datepart(year,getdate()),datepart(month,getdate()),datepart(dd,getdate())
2 select datediff(dd,'2007-2-5',getdate())
Ⅷ 多給點SQL日期函數的應用舉例說明,要收集。
1. 當前系統日期、時間
select getdate()
2. dateadd 在向指定日期加上一段時間的基礎上,返回新的 datetime 值
例如:向日期加上2天
select dateadd(day,2,'2004-10-15') --返回:2004-10-17 00:00:00.000
3. datediff 返回跨兩個指定日期的日期和時間邊界數。
select datediff(day,'2004-09-01','2004-09-18') --返回:17
select datediff(day,'2004-09-18','2004-09-01') --返回:-17
4. datepart 返回代表指定日期的指定日期部分的整數。
SELECT DATEPART(month, '2004-10-15') --返回 10
5. datename 返回代表指定日期的指定日期部分的字元串
SELECT datename(weekday, '2004-10-15') --返回:星期五
6. day(), month(),year() --可以與datepart對照一下
select 當前日期=convert(varchar(10),getdate(),120)
,當前時間=convert(varchar(8),getdate(),114)
select datename(dw,'2004-10-15')
select 本年第多少周=datename(week,'2004-10-15')
,今天是周幾=datename(weekday,'2004-10-15')
函數 參數/功能
GetDate( ) 返回系統目前的日期與時間
DateDiff (interval,date1,date2) 以interval 指定的方式,返回date2 與date1兩個日期之間的差值
date2-date1
DateAdd (interval,number,date) 以interval指定的方式,加上number之後的日期
DatePart (interval,date) 返回日期date中,interval指定部分所對應的整數值
DateName (interval,date) 返回日期date中,interval指定部分所對應的字元串名稱
參數 interval的設定值如下:
值 縮 寫(Sql Server) (Access 和 ASP) 說明
Year Yy yyyy 年 1753 ~ 9999
Quarter Qq q 季 1 ~ 4
Month Mm m 月1 ~ 12
Day of year Dy y 一年的日數,一年中的第幾日 1-366
Day Dd d 日,1-31
Weekday Dw w 一周的日數,一周中的第幾日 1-7
Week Wk ww 周,一年中的第幾周 0 ~ 51
Hour Hh h 時0 ~ 23
Minute Mi n 分鍾0 ~ 59
Second Ss s 秒 0 ~ 59
Millisecond Ms - 毫秒 0 ~ 999
access 和 asp 中用date()和now()取得系統日期時間;其中DateDiff,DateAdd,DatePart也同是能用於
Access和asp中,這些函數的用法也類似
舉例:
1.GetDate() 用於sql server :select GetDate()
2.DateDiff('s','2005-07-20','2005-7-25 22:56:32')返回值為 514592 秒
DateDiff('d','2005-07-20','2005-7-25 22:56:32')返回值為 5 天
3.DatePart('w','2005-7-25 22:56:32')返回值為 2 即星期一(周日為1,周六為7)
DatePart('d','2005-7-25 22:56:32')返回值為 25即25號
DatePart('y','2005-7-25 22:56:32')返回值為 206即這一年中第206天
DatePart('yyyy','2005-7-25 22:56:32')返回值為 2005即2005年
具體的語法:
日期函數用來操作DATETIME 和SMALLDATETIME 類型的數據,執行算術運算。與其它函數一樣,可以在
Select 語句的Select 和Where 子句以及表達式中使用日期函數。其使用方法如下:
日期函數參數,其中參數個數應不同的函數而不同。
·DAY()
DAY() 函數語法如下:
DAY (<date_expression>)
DAY() 函數返回date_expression 中的日期值。
·MONTH()
MONTH() 函數語法如下:
MONTH (<date_expression>)
MONTH() 函數返回date_expression 中的月份值。
與DAY() 函數不同的是,MONTH() 函數的參數為整數時,一律返回整數值1,即SQL Server 認為其
是1900 年1 月。
·YEAR()
YEAR() 函數語法如下:
YEAR (<date_expression>)
YEAR() 函數返回date_expression 中的年份值。
提醒:在使用日期函數時,其日期值應在1753年到9999年之間,這是SQL Server系統所能識別的日期范
圍,否則會出現錯誤。
·DATEADD()
DATEADD() 函數語法如下:
DATEADD (<datepart>, <number>, <date>)
DATEADD() 函數返回指定日期date 加上指定的額外日期間隔number 產生的新日期。參數「datepart
」 在日期函數中經常被使用,它用來指定構成日期類型數據的各組件,如年、季、月、日、星期等。
其取值如表4-9 所示:
·DATEDIFF()
DATEDIFF() 函數語法如下:
DATEDIFF() (<datepart>, <date1>, <date2>)
DATEDIFF() 函數返回兩個指定日期在datepart 方面的不同之處,即date2 超過date1的差距值,其
結果值是一個帶有正負號的整數值。針對不同的datepart, DATEDIFF()函數所允許的最大差距值不
一樣,如:datepart 為second 時,DATEDIFF() 函數所允許的最大差距值為68: 年datepart 為
millisecond 時,DATEDIFF() 函數所允許的最大差距值為24 天20 小時30 分23 秒647 毫秒。
·DATENAME()
DATENAME() 函數語法如下:
DATENAME (<datepart>, <date)>
DATENAME() 函數以字元串的形式返回日期的指定部分此部分。由datepart 來指定。
·DATEPART()
DATEPART() 函數語法如下:
DATEPART (<datepart>, <date>)
DATEPART() 函數以整數值的形式返回日期的指定部分。此部分由datepart 來指定。
DATEPART (dd, date) 等同於DAY (date)
DATEPART (mm, date) 等同於MONTH (date)
DATEPART (yy, date) 等同於YEAR (date)
·GETDATE()
GETDATE() 函數語法如下:
GETDATE()
GETDATE() 函數以DATETIME 的預設格式返回系統當前的日期和時間,它常作為其它函數或命令的參
數使用。
在開發資料庫應用中,經常會遇到處理時間的問題,如查詢指定時間的記錄等。下面就這些常見的問題
,結合自己的一些經驗,和大家探討一下這類問題。
首先介紹一下,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