適用於: 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

    提交並檢視相關的意見反應