共用方式為


DATETIMEOFFSETFROMPARTS (Transact-SQL)

適用於: SQL Server Azure SQL 資料庫 Azure SQL 受控執行個體 Azure Synapse Analytics Analytics Platform System (PDW)

會傳回指定日期和時間引數的 datetimeoffset 值。 傳回值的有效位數由 precision 引數指定,時差則由 offset 引數指定。

Transact-SQL 語法慣例

語法

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

引數

year
指定年份的整數運算式。

month
指定月份的整數運算式。

day
指定日期的整數運算式。

hour
指定小時的整數運算式。

minute
指定分鐘的整數運算式。

seconds
指定秒的整數運算式。

fractions
指定小數秒值的整數運算式。

hour_offset
指定時區時差之小時部分的整數運算式。

minute_offset
指定時區時差之分鐘部分的整數運算式。

有效位數
整數常值,指定 DATETIMEOFFSETFROMPARTS 所傳回 datetimeoffset 值的有效位數。

傳回類型

datetimeoffset( precision

備註

DATETIMEOFFSETFROMPARTS 會傳回完整初始化的 datetimeoffset 資料類型。 offset 引數代表時區時差。 針對省略的 offset 引數,DATETIMEOFFSETFROMPARTS 會假設時區時差為 00:00,也就是完全沒有時區時差。 針對指定的 offset 引數,DATETIMEOFFSETFROMPARTS 預期兩個引數都有值,而且兩個值同時為正數值或負數值。 如果 minute_offset 具有值而 hour_offset 沒有值,DATETIMEOFFSETFROMPARTS 會引發錯誤。 如果其他引數的值無效,則 DATETIMEOFFSETFROMPARTS 會引發錯誤。 如果至少一個必要引數具有 NULL 值,則 DATETIMEOFFSETFROMPARTS 會傳回 NULL。 不過,如果 precision 引數具有 NULL 值,則 DATETIMEOFFSETFROMPARTS 會引發錯誤。

fractions 引數相依於 precision 引數。 例如,precision 值為 7 的每個部分表示 100 奈秒;precision 為 3 的每個部分表示 1 毫秒。 如果 precision 值為零,fractions 也必須為零,否則 DATETIMEOFFSETFROMPARTS 會引發錯誤。

函數可以在 SQL Server 2012 (11.x) 伺服器和更新版伺服器上以遠端方式進行。 它在版本低於 SQL Server 2012 (11.x) 的伺服器上無法以遠端方式運作。

範例

A. 不包含秒之小數部分的範例

SELECT DATETIMEOFFSETFROMPARTS ( 2010, 12, 31, 14, 23, 23, 0, 12, 0, 7 ) AS Result;  

結果集如下所示。

Result  
----------------------------------
2010-12-31 14:23:23.0000000 +12:00  
  
(1 row(s) affected)  

B. 含秒的小數部分的範例

此範例示範 fractionsprecision 參數的用法:

  1. fractions 的值為 5、precision 的值為 1,則 fractions 的值表示 5/10 秒。

  2. fractions 的值為 50、precision 的值為 2,則 fractions 的值表示 50/100 秒。

  3. fractions 的值為 500、precision 的值為 3,則 fractions 的值表示 500/1000 秒。

SELECT DATETIMEOFFSETFROMPARTS ( 2011, 8, 15, 14, 30, 00, 5, 12, 30, 1 );  
SELECT DATETIMEOFFSETFROMPARTS ( 2011, 8, 15, 14, 30, 00, 50, 12, 30, 2 );  
SELECT DATETIMEOFFSETFROMPARTS ( 2011, 8, 15, 14, 30, 00, 500, 12, 30, 3 );  
GO  

結果集如下所示。

----------------------------------  
2011-08-15 14:30:00.5 +12:30  
  
(1 row(s) affected)  
  
----------------------------------  
2011-08-15 14:30:00.50 +12:30  
  
(1 row(s) affected)  
  
----------------------------------  
2011-08-15 14:30:00.500 +12:30  
  
(1 row(s) affected)  

另請參閱

datetimeoffset (Transact-SQL)
AT TIME ZONE (Transact-SQL)