日期和時間資料類型與函數 (Transact-SQL)
在此文章
適用於: SQL Server Azure SQL 資料庫 Azure SQL 受控執行個體 Azure Synapse Analytics
本文中的各節將說明所有 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 到 31.12.99
1 日
3
否
No
smalldatetime
yyyy-MM-dd HH:mm:ss
1900-01-01 到 2079-06-06
1 分鐘
4
否
No
datetime
yyyy-MM-dd HH:mm:ss[.nnn]
1753-01-01 到 9999-12-31
0.00333 秒鐘
8
No
No
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
Yes
是
注意
Transact-SQL rowversion 數據類型不是日期或時間數據類型。 timestamp 是 rowversion 的已取代同義字。
日期和時間函式
下表列出 Transact-SQL 日期和時間函數。 如需確定性的詳細資訊,請參閱決定性與非決定性函數 。
傳回系統日期和時間值的函數
Transact-SQL 會從執行 SQL Server 執行個體之電腦的作業系統衍生所有系統日期和時間值。
較高精確度的系統日期和時間函數
自 SQL Server 2008 (10.0.x) 起,資料庫引擎會透過使用 GetSystemTimeAsFileTime() Windows API 來衍生日期和時間值。 精確度取決於執行 SQL Server 執行個體的電腦硬體和 Windows 版本。 此 API 的精確度是固定於 100 奈秒。 請使用 GetSystemTimeAdjustment() Windows API 來判斷正確性。
函數
Syntax
傳回值
傳回資料類型
決定性
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)
不具決定性
較低精確度的系統日期和時間函數
函數
Syntax
傳回值
傳回資料類型
決定性
CURRENT_TIMESTAMP
CURRENT_TIMESTAMP
傳回 datetime 值,此值包含執行 SQL Server 執行個體之電腦的日期和時間。 傳回的值不包含時區時差。
datetime
不具決定性
GETDATE
GETDATE ( )
傳回 datetime 值,此值包含執行 SQL Server 執行個體之電腦的日期和時間。 傳回的值不包含時區時差。
datetime
不具決定性
GETUTCDATE
GETUTCDATE ( )
傳回 datetime 值,此值包含執行 SQL Server 執行個體之電腦的日期和時間。 此函式是以國際標準時間 (Coordinated Universal Time,UTC) 傳回日期和時間值。
datetime
不具決定性
CURRENT_DATE
CURRENT_DATE
傳回日期 值,只包含執行 資料庫引擎 實例的計算機日期。 傳回的值不包含時間和時區位移。
date
不具決定性
傳回日期和時間部分的函數
函數
Syntax
傳回值
傳回資料類型
決定性
DATE_BUCKET
DATE_BUCKET ( datepart , number , date , origin )
從 origin 參數所定義的時間戳記 (如果未指定 origin 參數,則會從 1900-01-01 00:00:00.000
的預設原始值),傳回對應至每個日期時間值區起點的值。
傳回型別取決於提供給 date 的引數。
不具決定性
DATENAME
DATENAME ( datepart , date )
傳回字元字串,代表指定日期的指定 datepart 。
nvarchar
不具決定性
DATEPART
DATEPART ( datepart , date )
傳回一個整數,代表指定 date 的指定 datepart 。
int
不具決定性
DATETRUNC
DATETRUNC ( datepart , date )
傳回截斷至指定 datepart 的輸入 date 。
傳回型別取決於提供給 date 的引數。
不具決定性
DAY
DAY ( date )
傳回一個整數,代表指定 date 的日 (Day) 部分。
int
具決定性
MONTH
MONTH ( date )
傳回一個整數,代表指定 date 的月 (Month) 部分。
int
具決定性
YEAR
YEAR ( date )
傳回一個整數,代表指定 date 的年 (Year) 部分。
int
具決定性
傳回日期和時間部分中日期和時間值的函數
函數
Syntax
傳回值
傳回資料類型
決定性
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 值。
datetimeoffset(precision )
具決定性
SMALLDATETIMEFROMPARTS
SMALLDATETIMEFROMPARTS ( year , month , day , hour , minute )
傳回指定日期和時間的 smlldatetime 值。
smalldatetime
具決定性
TIMEFROMPARTS
TIMEFROMPARTS ( hour , minute , seconds , fractions , precision )
以指定的精確度傳回指定時間的 time 值。
time(precision )
具決定性
傳回日期和時間差異值的函數
函數
Syntax
傳回值
傳回資料類型
決定性
DATEDIFF
DATEDIFF ( datepart , startdate , enddate )
傳回跨越兩個指定日期的日期或時間 datepart 界限數字。
int
具決定性
DATEDIFF_BIG
DATEDIFF_BIG ( datepart , startdate , enddate )
傳回跨越兩個指定日期的日期或時間 datepart 界限數字。
bigint
具決定性
修改日期和時間值的函數
函數
Syntax
傳回值
傳回資料類型
決定性
DATEADD
DATEADD (datepart , number , date )
透過在指定 date 的指定 datepart 中新增間隔,傳回新的 datetime 值。
date 引數的資料類型
具決定性
EOMONTH
EOMONTH ( start_date [ , month_to_add ] )
以選擇性位移,傳回包含指定日期的當月最後一天。
傳回類型是 start_date 引數的類型,或者是 date 資料類型。
具決定性
SWITCHOFFSET
SWITCHOFFSET (DATETIMEOFFSET , time_zone )
SWITCHOFFSET 會變更 DATETIMEOFFSET 值的時區時差,並保留 UTC 值。
具有 DATETIMEOFFSET 之毫秒精確度的 datetimeoffset
具決定性
TODATETIMEOFFSET
TODATETIMEOFFSET (expression , time_zone )
TODATETIMEOFFSET 會將 datetime2 值轉換成 datetimeoffset 值。 TODATETIMEOFFSET 會針對指定的 time_zone 以當地時間解譯 datetime2 值。
具有 datetime 引數之毫秒精確度的 datetimeoffset
具決定性
函數
Syntax
傳回值
傳回資料類型
決定性
@@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
不是日期或時間預存程式。 不過,語言設定會影響日期函數的輸出。
不適用
不適用
驗證日期和時間值的函數
函數
Syntax
傳回值
傳回資料類型
決定性
ISDATE
ISDATE ( expression )
判斷 datetime 或 smalldatetime 輸入運算式是否具有有效的日期或時間值。
int
只有在搭配 CONVERT 函數使用、已指定 CONVERT 樣式參數,而且樣式不等於 0、100、9 或 109 時,ISDATE 才具有決定性。
與日期和時間相關的文章
發行項
描述
FORMAT
傳回以指定格式與選擇性文化特性所格式化的值。 將 FORMAT 函數用於將日期/時間與數值視為字串的地區設定感知格式化作業。
CAST 和 CONVERT
提供將日期和時間值在字串常值與其他日期和時間格式之間來回轉換的相關資訊。
撰寫國際通用的 Transact-SQL 陳述式
提供一些指導方針,讓使用 Transact-SQL 陳述式的資料庫與資料庫應用程式能從某種語言移植至另一種語言,或可支援多種語言。
ODBC 純量函式
提供可用於 Transact-SQL 陳述式之 ODBC 純量函式的相關資訊。 包含 ODBC 日期和時間函式。
在時區
提供時區轉換。
相關內容