DATETIMEOFFSETFROMPARTS (Transact-SQL)

适用于:SQL ServerAzure SQL 数据库Azure SQL 托管实例Azure Synapse AnalyticsAnalytics Platform System (PDW)

返回指定日期和时间参数的 datetimeoffset 值。 返回值包含精度参数指定的精度,以及偏移参数指定的偏移量。

Transact-SQL 语法约定

语法

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

注意

若要查看 SQL Server 2014 (12.x) 及更早版本的 Transact-SQL 语法,请参阅早期版本文档

参数

year
指定年份的整数表达式。

month
指定月份的整数表达式。

day
指定日期的整数表达式。

hour
指定小时的整数表达式。

minute
指定分钟的整数表达式。

seconds
指定秒数的整数表达式。

fractions
指定秒的小数形式值的整数表达式。

hour_offset
整数表达式,用于指定时区偏移量的小时部分。

minute_offset
整数表达式,用于指定时区偏移量的分钟部分。

精度
整数文本值,用于指定 DATETIMEOFFSETFROMPARTS 要返回的 datetimeoffset 值的精度。

返回类型

datetimeoffset( precision )

注解

DATETIMEOFFSETFROMPARTS 返回已完全初始化的 datetimeoffset 数据类型。 偏移参数表示时区偏移量。 对于省略的偏移参数,DATETIMEOFFSETFROMPARTS 假定时区偏移量为 00:00,换言之,即没有时区偏移量。 对于指定的偏移参数,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. 包含秒的小数部分的示例

此示例介绍了 fractions 和 precision 参数的用法

  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)