適用於:
SQL Server
Azure SQL Database
Azure SQL 受控執行個體
Azure Synapse Analytics
本文中的各節將說明所有 Transact-SQL 日期和時間資料類型與函數。
日期和時間資料類型
日期和時間函式
傳回系統日期和時間值的函數
傳回日期和時間部分的函數
傳回日期和時間部分中日期和時間值的函數
傳回日期和時間差異值的函數
修改日期和時間值的函數
設定或傳回工作階段格式函數的函數
驗證日期和時間值的函數
與日期和時間相關的文章
日期和時間資料類型
下表列出 Transact-SQL 日期和時間資料類型:
儲存體大小 (位元組)
使用者自訂的小數秒數有效位數
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 日期和時間函數。 如需決定性的詳細資訊,請參閱
決定性與非決定性函式
。
傳回系統日期和時間值的函數
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
不具決定性
傳回日期和時間部分的函數
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
。
不具決定性
DATETRUNC
DATETRUNC (
datepart
,
date
)
傳回截斷至指定
datepart
的輸入
date
。
傳回型別取決於提供給
date
的引數。
不具決定性
DAY (
date
)
傳回一個整數,代表指定
date
的日 (Day) 部分。
MONTH
MONTH (
date
)
傳回一個整數,代表指定
date
的月 (Month) 部分。
YEAR (
date
)
傳回一個整數,代表指定
date
的年 (Year) 部分。
傳回日期和時間部分中日期和時間值的函數
Syntax
傳回資料類型
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_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
傳回資料類型
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
傳回資料類型
撰寫國際通用的 Transact-SQL 陳述式
提供一些指導方針,讓使用 Transact-SQL 陳述式的資料庫與資料庫應用程式能從某種語言移植至另一種語言,或可支援多種語言。
ODBC 純量函數 (Transact-SQL)
提供可用於 Transact-SQL 陳述式之 ODBC 純量函式的相關資訊。 這包括 ODBC 日期和時間函式。
AT TIME ZONE (Transact-SQL)
提供時區轉換。
資料類型 (Transact-SQL)
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:
https://aka.ms/ContentUserFeedback
。
提交並檢視相關的意見反應