DATEADD
在向指定日期加上一段時間的基礎上,傳回新的 datetime 值。
文法
DATEADD ( interval , number, date ) 将一個日期加上一段期間後的日期。 interval :設定一個日期( Date )所加上的一段期間的機關。譬如 interval ="d" 表示 number的機關為日。 interval 的設定值如下:
設定 | 描述 |
yyyy | 年Year |
q | 季Quarter |
m | 月Month |
y | 一年的日數 |
d | 日Day |
w | 一周的日數 |
ww | 周Weekday |
h | 時Hour |
n | 分鐘Minute |
s | 秒Second |
number :數值表達式,設定一個日期所加上的一段期間,可為正值或負值,正值表示加(結果為 date 以後的日期),負值表示減(結果為 date 以前的日期)。
date :待加減的日期。
例子: 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 天後的日期。
DATEDIFF
傳回跨兩個指定日期的日期和時間邊界數。
文法
DATEDIFF ( interval , startdate , enddate )
計算兩個日期之間的期間。
interval :設定兩個日期之間的期間計算之機關。譬如 interval ="m" 表示計算的機關為月。 interval 的設定值如:
日期部分 | 縮寫 |
---|---|
year | yy, yyyy |
quarter | qq, q |
Month | mm, m |
dayofyear | dy, y |
Day | dd, d |
Week | wk, ww |
Hour | hh,h |
minute | mi, n |
second | ss, s |
millisecond | ms |
startdate ,enddate :計算期間的兩個日期表達式,若 enddate 較早,則兩個日期之間的期間結果為正值;若 startdate 較早, 則結果為負值。
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 天
GETDATE
按 datetime 值的 Microsoft® SQL Server™ 标準内部格式傳回目前系統日期和時間。
文法
GETDATE ( )
傳回類型
datetime
注釋
日期函數可用在 SELECT 語句的選擇清單或用在查詢的 WHERE 子句中。
在設計報表時,GETDATE 函數可用于在每次生成報表時列印目前日期和時間。GETDATE 對于跟蹤活動也很有用,諸如記錄事務在某一帳戶上發生的時間。
示例
A. 用 GET DATE 傳回目前日期和時間
下面的示例得出目前系統日期和時間:
SELECT GETDATE()
GO
下面是結果集:
-------------------------
July 29 1998 2:50 PM
(1 row(s) affected)
B. 在 CREATE TABLE 語句中使用 GETDATE
下面的示例建立 employees 表并用 GETDATE 給出員工雇傭時間的預設值。
USE pubs
GO
CREATE TABLE employees
(
emp_id char(11) NOT NULL,
emp_lname varchar(40) NOT NULL,
emp_fname varchar(20) NOT NULL,
emp_hire_date datetime DEFAULT GETDATE(),
emp_mgr varchar(30)
)
GO
DATENAME
傳回代表指定日期的指定日期部分的字元串。
文法
DATENAME ( datepart , date ) 參數
datepart
是指定應傳回的日期部分的參數。下表列出了 Microsoft® SQL Server™ 識别的日期部分和縮寫。
日期部分 | 縮寫 |
---|---|
year | yy, yyyy |
quarter | qq, q |
month | mm, m |
dayofyear | dy, y |
day | dd, d |
week | wk, ww |
weekday | dw |
Hour | hh |
minute | mi, n |
second | ss, s |
millisecond | ms |
weekday (dw) 日期部分傳回星期幾(星期天、星期一等)。
是傳回 datetime 或 smalldatetime 值或日期格式字元串的表達式。對 1753 年 1 月 1 日之後的日期用 datetime 資料類型。更早的日期存儲為字元資料。當輸入 datetime 值時,始終将其放入引号中。因為 smalldatetime 隻精确到分鐘,是以當用 smalldatetime 值時,秒和毫秒總是 0。
如果隻指定年份的最後兩位數字,則小于或等于 two digit year cutoff 配置選項的值的最後兩位數字的值所在世紀與截止年所在世紀相同。大于該選項的值的最後兩位數字的數字所在世紀為截止年所在世紀的前一個世紀。例如,如果 two digit year cutoff 為 2050(預設),則 49 被解釋為 2049,50 被解釋為 1950。為避免模糊,請使用四位數字的年份。
傳回類型
nvarchar
注釋
SQL Server 自動在字元和 datetime 值間按需要進行轉換,例如,當将字元值與 datetime 值進行比較時。
示例
此示例從 GETDATE 傳回的日期中提取月份名。
SELECT DATENAME(month, getdate()) AS 'Month Name'
下面是結果集:
Month Name
------------------------------
February
Day( 日期的字元串或表達式 )
傳回代表指定日期的天的日期部分的整數。
文法
DAY ( date )
參數
date
類型為 datetime 或 smalldatetime 的表達式。
傳回類型
int
注釋
此函數等價于 DATEPART(dd, date)。
示例
此示例傳回從日期 03/12/1998 後的天數。
SELECT DAY('03/12/1998') AS 'Day Number'
GO
下面是結果集:
Day Number
------------
12
在此示例中,以數字表示日期。注意:Microsoft® SQL Server™ 将 0 解釋為 01/01/1900。
SELECT MONTH(0), DAY(0), YEAR(0)
下面是結果集。
----- ------ ------
1 1 1900
例子: Day(" 12/1/1999 ")
結果: 1
MONTH
傳回代表指定日期月份的整數。
文法
MONTH ( date )
參數
date
傳回 datetime 或 smalldatetime 值或日期格式字元串的表達式。僅對 1753 年 1 月 1 日後的日期使用 datetime 資料類型。
傳回類型
int
注釋
MONTH 等價于 DATEPART(mm, date)。
将 datetime 值包含在引号中。對于早期日期,可将其存儲為字元資料。
Microsoft® SQL Server™ 認可各種日期樣式。
示例
下面的示例從日期 03/12/1998 中傳回月份數。
SELECT "Month Number" = MONTH('03/12/1998')
GO
下面是結果集:
Month Number
------------
3
下例用數字指定日期。注意:SQL Server 将 0 解釋為 01/01/1900。
SELECT MONTH(0), DAY(0), YEAR(0)
下面是結果集。
----- ------ ------
1 1 1900
YEAR
傳回表示指定日期中的年份的整數。
文法
YEAR ( date )
參數
date
datetime 或 smalldatetime 類型的表達式。
傳回類型
int
注釋
此函數等價于 DATEPART(yy, date)。
示例
下例從日期 03/12/1998 中傳回年份數。
SELECT "Year Number" = YEAR('03/12/1998')
GO
下面是結果集:
Year Number
------------
1998
下例用數字指定日期。注意:Microsoft® SQL Server™ 資料庫将 0 解釋為 1900 年 1 月 1 日。
SELECT MONTH(0), DAY(0), YEAR(0)
下面是結果集:
----- ------ ------
1 1 1900
DATEPART
傳回代表指定日期的指定日期部分的整數。
文法
DATEPART ( datepart , date )
參數
datepart
是指定應傳回的日期部分的參數。下表列出了 Microsoft® SQL Server™ 識别的日期部分和縮寫。
日期部分 | 縮寫 |
---|---|
year | yy, yyyy |
quarter | qq, q |
month | mm, m |
dayofyear | dy, y |
day | dd, d |
week | wk, ww |
weekday | dw |
Hour | hh |
minute | mi, n |
second | ss, s |
millisecond | ms |
week (wk, ww) 日期部分反映對 SET DATEFIRST 作的更改。任何一年的 1 月 1 日定義了 week 日期部分的開始數字,例如:DATEPART(wk, 'Jan 1, xxxx') = 1,此處 xxxx 代表任一年。
weekday (dw) 日期部分傳回對應于星期中的某天的數,例如:Sunday = 1、Saturday = 7。weekday 日期部分産生的數取決于 SET DATEFIRST 設定的值,此指令設定星期中的第一天。
date
是傳回 datetime 或 smalldatetime 值或日期格式字元串的表達式。對 1753 年 1 月 1 日之後的日期用datetime 資料類型。更早的日期存儲為字元資料。當輸入 datetime 值時,始終将其放入引号中。因為 smalldatetime 隻精确到分鐘,是以當用 smalldatetime 值時,秒和毫秒總是 0。
如果隻指定年份的最後兩位數字,則小于或等于"兩位數年份截止期"配置選項的值的最後兩位數字的數字所在世紀與截止年所在世紀相同。大于該選項的值的最後兩位數字的數字所在世紀為截止年所在世紀的前一個世紀。例如,如果 two digit year cutoff 為 2049 (預設),則 49 被解釋為 2049,2050 被解釋為 1950。為避免模糊,請使用四位數的年份。
傳回類型
int
注釋
DAY、MONTH、和 YEAR 函數分别是 DATEPART(dd, date)、DATEPART(mm, date)、和 DATEPART(yy, date) 的同義詞。
示例
GETDATE 函數傳回目前日期;然而,比較時并不總是需要完整的日期資訊(通常隻是對日期的一部分進行比較)。此示例顯示 GETDATE 及 DATEPART 的輸出。
SELECT GETDATE() AS 'Current Date'
GO
下面是結果集:
Current Date
---------------------------
Feb 18 1998 11:46PM
SELECT DATEPART(month, GETDATE()) AS 'Month Number'
GO
下面是結果集:
Month Number
------------
2
此示例假設日期是 5 月 29 日。
SELECT DATEPART(month, GETDATE())
GO
下面是結果集:
-----------
5
(1 row(s) affected)
在此示例中,以數字表示日期。注意:SQL Server 将 0 解釋為 01/01/1900。
SELECT DATEPART(m, 0), DATEPART(d, 0), DATEPART(yy, 0)
下面是結果集:
----- ------ ------
1 1 1900
GETUTCDATE
傳回表示目前 UTC 時間(世界時間坐标或格林尼治标準時間)的 datetime 值。目前的 UTC 時間得自目前的本地時間和運作 SQL Server 的計算機作業系統中的時區設定。
文法
GETUTCDATE()
傳回類型
datetime
注釋
GETUTCDATE 是非确定性函數。引用該列的視圖和表達式無法進行索引。
GETUTCDATE 無法在使用者定義的函數内調用。