日期 (Transact-SQL)

定義日期。

如需所有 Transact-SQL 日期和時間資料類型與函數的概觀,請參閱<日期和時間資料類型與函數 (Transact-SQL)>。如需日期和時間資料類型與函數常用的資訊和範例,請參閱<使用日期和時間資料>。

date 描述

屬性

語法

date

使用方式

DECLARE @MyDate date

CREATE TABLE Table1 ( Column1 date )

預設的字串常值格式

(用於下層用戶端)

YYYY-MM-DD

如需詳細資訊,請參閱<使用日期和時間資料>的「下層用戶端的回溯相容性」一節。

範圍

0001:01:01 到 9999:12:31

西元 1 年 1 月 1 日到西元 9999 年 12 月 31 日

元素範圍

YYYY 是代表年份的四位數,範圍介於 0001 至 9999 之間。

MM 是代表指定年份中某個月份的兩位數,範圍介於 01 至 12 之間。

DD 是代表指定月份中某個日期的兩位數,範圍介於 01 至 31 之間 (視月份而定)。

字元長度

10 個位置

有效位數,小數位數

10, 0

儲存體大小

3 個位元組 (固定)

儲存體結構

1 個 3 位元組的整數會儲存日期。

精確度

一天

預設值

1900-01-01

這個值會用於從 time 隱含轉換成 datetime2 或 datetimeoffset 的附加日期部分。

日曆

西曆

使用者自訂的小數秒數有效位數

時區位移感知和保留

日光節約感知

支援 date 的字串常值格式

下表顯示 date 資料類型的有效字串常值格式。

數值

描述

mdy                         

[m]m/dd/[yy]yy       

[m]m-dd-[yy]yy       

[m]m.dd.[yy]yy       

myd                         

mm/[yy]yy/dd       

mm-[yy]yy/dd       

[m]m.[yy]yy.dd       

dmy                         

dd/[m]m/[yy]yy       

dd-[m]m-[yy]yy       

dd.[m]m.[yy]yy       

dym                         

dd/[yy]yy/[m]m       

dd-[yy]yy-[m]m       

dd.[yy]yy.[m]m       

ymd                         

[yy]yy/[m]m/dd       

[yy]yy-[m]m-dd       

[yy]yy-[m]m-dd       

[m]m、dd 和 [yy]yy 在字串中使用斜線 (/)、連字號 (-) 或句號 (.) 做為分隔符號來代表月份、日期和年份。

僅支援四或兩位數年份。請盡可能使用四位數年份。若要從 0001 到 9999 中指定一個整數來表示截止年份,以便將兩位數年份解譯為四位數年份,請使用two digit year cutoff 選項

兩位數年份若小於或等於截止年份的後兩位數,表示它與截止年份同一世紀。兩位數年份若大於截止年份的後兩位數,表示它在截止年份的前一個世紀。例如,如果兩位數年份的截止是預設值 2049,則兩位數年份 49 就會被解譯為 2049,而兩位數年份 50 則解譯為 1950。

預設的日期格式由目前的語言設定決定。您可以使用 SET LANGUAGESET DATEFORMAT 陳述式來變更日期格式。

ydm 格式不支援 date。

字母順序

描述

mon [dd][,] yyyy      

mon dd[,] [yy]yy      

mon yyyy [dd]          

[dd] mon[,] yyyy      

dd mon[,][yy]yy       

dd [yy]yy mon         

[dd] yyyy mon         

yyyy mon [dd]         

yyyy [dd] mon         

mon 代表目前語言中指定的完整月份名稱或月份縮寫。逗號是選擇性且會忽略大小寫。

若要避免模糊不清,請使用四位數年份。

如果漏了日的部份,就用當月第一天。

ISO 8601

描述

YYYY-MM-DD            

YYYYMMDD               

與 SQL 標準相同。這是定義為國際標準的唯一格式。

未分隔

描述

[yy]yymmdd            

yyyy[mm][dd]          

您可以使用四、六或八位數來指定 date 資料。六或八位數字串一律會解譯成 ymd。月和日一定是兩位數。四位數字串則會解譯為年份。

ODBC

描述

{ d 'yyyy-mm-dd' }   

ODBC API 專用。

SQL Server 2008 中的函數,如同 SQL Server 2005。

W3C XML 格式

描述

yyyy-mm-ddTZD      

特別支援 XML / SOAP 使用方式。

TZD 是時區指示項 (Z 或 + hh: mm 或 -hh:mm):

  • hh:mm 代表時區位移。hh 是代表時區位移中時數的兩位數,範圍介於 0 至 14 之間。

  • MM 是代表時區位移中額外分鐘數的兩位數,範圍介於 0 至 59 之間。

  • + (加號) 或 – (減號) 是時區位移的必要符號。這會指出若要取得當地時間,則必須在國際標準時間 (UTC) 中加上或扣除時區位移。時區位移的有效範圍介於 -14:00 至 +14:00 之間。

ANSI 和 ISO 8601 標準

date 符合西曆的 ANSI SQL 標準定義:「附註 85 - Datetime 資料類型會允許採用西曆格式的日期以 0001–01–01 CE 到 9999–12–31 CE 的日期範圍儲存」。

預設字串常值格式 (用於下層用戶端) 會符合 SQL 標準格式 (定義為 YYYY-MM-DD)。這個格式與 DATE 的 ISO 8601 定義相同。

範例

下列範例會比較將字串轉換成每個 date 和 time 資料類型的結果。

SELECT 
     CAST('2007-05-08 12:35:29. 1234567 +12:15' AS time(7)) AS 'time' 
    ,CAST('2007-05-08 12:35:29. 1234567 +12:15' AS date) AS 'date' 
    ,CAST('2007-05-08 12:35:29.123' AS smalldatetime) AS 
        'smalldatetime' 
    ,CAST('2007-05-08 12:35:29.123' AS datetime) AS 'datetime' 
    ,CAST('2007-05-08 12:35:29. 1234567 +12:15' AS datetime2(7)) AS 
        'datetime2'
    ,CAST('2007-05-08 12:35:29.1234567 +12:15' AS datetimeoffset(7)) AS 
        'datetimeoffset';

以下為結果集:

資料類型

輸出

time

12:35:29. 1234567

date

2007-05-08

smalldatetime

2007-05-08 12:35:00

datetime

2007-05-08 12:35:29.123

datetime2

2007-05-08 12:35:29. 1234567

datetimeoffset

2007-05-08 12:35:29.1234567 +12:15