datetime2 (Transact-SQL)

定義日期,並結合了以 24 小時制為基礎的當日時間。datetime2 可視為現有 datetime 類型的延伸模組,因為它具有較大的日期範圍、較大的預設小數有效位數和選擇性的使用者指定有效位數。

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

datetime2 描述

屬性

語法

datetime2 [ (fractional seconds precision) ]

使用方式

DECLARE @MyDatetime2 datetime2(7)

CREATE TABLE Table1 ( Column1 datetime2(7) )

預設的字串常值格式

(用於下層用戶端)

YYYY-MM-DD hh:mm:ss[.小數秒數]

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

日期範圍

0001-01-01 到 9999-12-31

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

時間範圍

00:00:00 到 23:59:59.9999999

時區位移範圍

元素範圍

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

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

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

hh 是代表小時的兩位數字,範圍介於 00 至 23 之間。

mm 是代表分鐘的兩位數字,範圍介於 00 至 59 之間。

ss 是代表秒鐘的兩位數字,範圍介於 00 至 59 之間。

n* 是代表小數秒數的零至七位數字,範圍介於 0 至 9999999 之間。

字元長度

最小 19 個位置 (YYYY-MM-DD hh:mm:ss),最大 27 個位置 (YYYY-MM-DD hh:mm:ss.0000000)

有效位數,小數位數

0 至 7 位數,精確度為 100ns。預設有效位數是 7 位數。

儲存體大小

6 個位元組代表有效位數小於 3,而 7 個位元組則代表有效位數是 3 和 4。所有其他有效位數則需要 8 個位元組。

精確度

100 奈秒

預設值

1900-01-01 00:00:00

日曆

西曆

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

時區位移感知和保留

日光節約感知

如需資料類型中繼資料,請參閱<sys.systypes (Transact-SQL)>或<TYPEPROPERTY (Transact-SQL)>。有效位數和小數位數是某些日期和時間資料類型的變數。若要取得資料行的有效位數和小數位數,請參閱<COLUMNPROPERTY (Transact-SQL)>、<COL_LENGTH (Transact-SQL)>或<sys.columns (Transact-SQL)>。

支援 datetime2 的字串常值格式

下表將列出支援 datetime2 的 ISO 8601 和 ODBC 字串常值格式。如需 datetime2 日期和時間部分之字母、數字、未分隔和時間格式的相關資訊,請參閱<日期 (Transact-SQL)>和<時間 (Transact-SQL)>。

ISO 8601

描述

YYYY-MM-DDThh:mm:ss[.nnnnnnn]

YYYY-MM-DDThh:mm:ss[.nnnnnnn]

此格式不受 SET LANGUAGE 和 SET DATEFORMAT 工作階段地區設定的影響。T、冒號 (:) 和句號 (.)會包含在字串常值中,例如 '2007-05-02T19:58:47.1234567'。

ODBC

描述

{ ts 'yyyy-mm-dd hh:mm:ss[.小數秒數]' }

ODBC API 專用:

  • 小數點右邊的位數 (代表小數秒數) 可指定為 0 至 7 (100 奈秒)。

  • 在 SQL Server 2008 中,如果相容性層級設定為 10,此常值將在內部對應至新的 time 類型。

ANSI 和 ISO 8601 標準

datetime 的 ANSI 與 ISO 8601 標準適用於 datetime2。

範例

下列範例會比較將字串轉換成每個 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