日期和時間資料類型與函數 (Transact-SQL)

本主題中的下列各節會提供所有 Transact-SQL 日期和時間資料類型與函數的概觀。

  • 日期和時間資料類型

  • 日期和時間函數

    • 取得系統日期和時間值的函數

    • 取得日期和時間部分的函數

    • 從各自部分取得日期和時間值的函數

    • 取得日期和時間差異的函數

    • 修改日期和時間值的函數

    • 設定或取得工作階段格式函數的函數

    • 驗證日期和時間值的函數

  • 與日期和時間相關的主題

日期和時間資料類型

Transact-SQL 日期和時間資料類型會列在下表中。 

資料類型

格式

範圍

精確度

儲存體大小 (位元組)

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

時區位移

time

hh:mm:ss[. nnnnnnn]

00:00:00.0000000 到 23:59:59.9999999

100 奈秒

3 到 5

date

YYYY-MM-DD

0001-01-01 到 9999-12-31

1 日

3

smalldatetime

YYYY-MM-DD hh:mm:ss

1900-01-01 到 2079-06-06

1 分鐘

4

datetime

YYYY-MM-DD hh:mm:ss[. nnn]

1753-01-01 到 9999-12-31

0.00333 秒鐘

8

datetime2

YYYY-MM-DD hh:mm:ss[. nnnnnnn]

0001-01-01 00:00:00.0000000 到 9999-12-31 23:59:59.9999999

100 奈秒

6 到 8

datetimeoffset

YYYY-MM-DD hh:mm:ss[. nnnnnnn] [+|-]hh:mm

0001-01-01 00:00:00.0000000 到 9999-12-31 23:59:59.9999999 (以 UTC 為單位)

100 奈秒

8 到 10

注意

Transact-SQL rowversion 資料類型不是日期或時間資料類型。timestamp 是被取代之 rowversion 的同義字。

日期和時間函數

Transact-SQL 日期和時間函數會列在下表中。 如需有關決定性的詳細資訊,請參閱<決定性與非決定性函數>。

取得系統日期和時間值的函數

所有系統日期和時間值都是衍生自執行 SQL Server 執行個體之電腦的作業系統。

較高精確度的系統日期和時間函數

SQL Server 2014 會使用 GetSystemTimeAsFileTime() Windows API 來取得日期和時間值。 精確度取決於執行 SQL Server 執行個體的電腦硬體和 Windows 版本。 此 API 的精確度是固定於 100 奈秒。 精確度可藉由使用 GetSystemTimeAdjustment() Windows API 來判斷。

函數

語法

傳回值

傳回資料類型

決定性

SYSDATETIME

SYSDATETIME ()

傳回 datetime2(7) 值,此值包含 SQL Server 執行個體執行所在之電腦的日期和時間。 時區位移並不包括在內。

datetime2(7)

不具決定性

SYSDATETIMEOFFSET

SYSDATETIMEOFFSET ( )

傳回 datetimeoffset(7) 值,此值包含其上執行 SQL Server 執行個體之電腦的日期和時間。 時區位移包括在內。

datetimeoffset(7)

不具決定性

SYSUTCDATETIME

SYSUTCDATETIME ( )

傳回 datetime2(7) 值,此值包含其上執行 SQL Server 執行個體之電腦的日期和時間。 日期和時間是以國際標準時間 (Coordinated Universal Time,UTC) 傳回。

datetime2(7)

不具決定性

較低精確度的系統日期和時間函數

函數

語法

傳回值

傳回資料類型

決定性

CURRENT_TIMESTAMP

CURRENT_TIMESTAMP

傳回 datetime 值,此值包含其上執行 SQL Server 執行個體之電腦的日期和時間。 時區位移並不包括在內。

datetime

不具決定性

GETDATE

GETDATE ( )

傳回 datetime 值,此值包含其上執行 SQL Server 執行個體之電腦的日期和時間。 時區位移並不包括在內。

datetime

不具決定性

GETUTCDATE

GETUTCDATE ( )

傳回 datetime 值,此值包含其上執行 SQL Server 執行個體之電腦的日期和時間。 日期和時間是以國際標準時間 (Coordinated Universal Time,UTC) 傳回。

datetime

不具決定性

取得日期和時間部分的函數

函數

語法

傳回值

傳回資料類型

決定性

DATENAME

DATENAME ( datepart , date )

傳回代表指定日期之指定 datepart 的字元字串。

nvarchar

不具決定性

DATEPART

DATEPART ( datepart , date )

傳回代表指定 date 之指定 datepart 的整數。

int

不具決定性

DAY

DAY ( date )

傳回代表指定 date 之日期部分的整數。

int

具決定性

MONTH

MONTH ( date )

傳回代表指定 date 之月份部分的整數。

int

具決定性

YEAR

YEAR ( date )

傳回代表指定 date 之年份部分的整數。

int

具決定性

從各自部分取得日期和時間值的函數

函數

語法

傳回值

傳回資料類型

決定性

DATEFROMPARTS

DATEFROMPARTS ( year, month, day )

傳回指定之年、月、日的 date 值。

date

具決定性

DATETIME2FROMPARTS

DATETIME2FROMPARTS ( year、 month、 day、hour、minute、 seconds、 fractions、 precision )

以指定的精確度傳回指定日期與時間的 datetime2 值。

datetime2 ( precision )

具決定性

DATETIMEFROMPARTS

DATETIMEFROMPARTS ( year, month, day, hour, minute, seconds, milliseconds )

傳回指定日期和時間的 datetime 值。

datetime

具決定性

DATETIMEOFFSETFROMPARTS

DATETIMEOFFSETFROMPARTS ( year, month, day, hour, minute, seconds, fractions, hour_offset, minute_offset, precision )

傳回包含指定時差和精確度之指定日期和時間的 datetimeoffset 值。

datetime ( precision )

具決定性

SMALLDATETIMEFROMPARTS

SMALLDATETIMEFROMPARTS ( year, month, day, hour, minute )

傳回指定日期和時間的 smalldatetime 值。

smalldatetime

具決定性

TIMEFROMPARTS

TIMEFROMPARTS ( hour, minute, seconds, fractions, precision )

傳回包含指定精確度之指定時間的 time 值。

time ( precision )

具決定性

取得日期和時間差異的函數

函數

語法

傳回值

傳回資料類型

決定性

DATEDIFF

DATEDIFF ( datepart , startdate , enddate )

傳回跨越兩個指定日期的日期或時間 datepart 界限數字。

int

具決定性

修改日期和時間值的函數

函數

語法

傳回值

傳回資料類型

決定性

DATEADD

DATEADD (datepart , number , date )

透過在指定 date 的指定 datepart 中加入間隔,傳回新的 datetime 值。

date 引數的資料類型。

具決定性

EOMONTH

EOMONTH ( start_date [, month_to_add ] )

以選擇性位移,傳回包含指定日期的當月最後一天。

傳回類型是 start_date 類型,或是 datetime2(7) 類型。

具決定性

SWITCHOFFSET

SWITCHOFFSET (DATETIMEOFFSET , time_zone)

SWITCHOFFSET 會變更 DATETIMEOFFSET 值的時區位移,並保留 UTC 值。

datetimeoffset 以及DATETIMEOFFSET

具決定性

TODATETIMEOFFSET

TODATETIMEOFFSET (expression , time_zone)

TODATETIMEOFFSET 會將 datetime2 值轉換成 datetimeoffset 值。 datetime2 值會針對指定的 time_zone 以當地時間解譯。

datetimeoffset 以及 datetime 引數的小數有效位數

具決定性

設定或取得工作階段格式的函數

函數

語法

傳回值

傳回資料類型

決定性

@@DATEFIRST

@@DATEFIRST

傳回 SET DATEFIRST 之工作階段的目前值。

tinyint

不具決定性

SET DATEFIRST

SET DATEFIRST { number |@number_var }

將一週的第一天設為 1-7 其中一個數字。

不適用

不適用

SET DATEFORMAT

SET DATEFORMAT { format |@format_var }

設定輸入 datetime 或 smalldatetime 資料時,日期部分 (月份/日期/年份) 的順序。

不適用

不適用

@@LANGUAGE

@@LANGUAGE

傳回目前所用語言的名稱。 @@LANGUAGE 不是日期或時間函數。 不過,語言設定可能會影響日期函數的輸出。

不適用

不適用

SET LANGUAGE

SET LANGUAGE { [ N ] 'language' |@language_var }

設定工作階段和系統訊息的語言環境。 SET LANGUAGE 不是日期或時間函數。 不過,語言設定會影響日期函數的輸出。

不適用

不適用

sp_helplanguage

sp_helplanguage [ [ @language = ] 'language' ]

傳回所有支援語言之日期格式的詳細資訊。 sp_helplanguage 不是日期或時間預存程序。 不過,語言設定會影響日期函數的輸出。

不適用

不適用

驗證日期和時間值的函數

函數

語法

傳回值

傳回資料類型

決定性

ISDATE

ISDATE ( expression )

判斷 datetime 或 smalldatetime 輸入運算式是否為有效的日期或時間值。

int

只有在搭配 CONVERT 函數使用、已指定 CONVERT 樣式參數,而且樣式不等於 0、100、9 或 109 時,ISDATE 才具有決定性。

與日期和時間相關的主題

主題

說明

CAST 和 CONVERT (Transact-SQL)

提供將日期和時間值在字串常值與其他日期和時間格式之間來回轉換的相關資訊。

撰寫國際通用的 Transact-SQL 陳述式

提供一些指導方針,讓使用 Transact-SQL 陳述式的資料庫與資料庫應用程式能從某個語言移植至另一個語言,或可支援多種語言。

ODBC 純量函數 (Transact-SQL)

提供可用於 Transact-SQL 陳述式之 ODBC 純量函數的相關資訊。 這包括 ODBC 日期和時間函數。

請參閱

參考

內建函數 (Transact-SQL)

資料類型 (Transact-SQL)