DATETIMEOFFSETFROMPARTS (Transact-SQL)
适用于:SQL Server Azure SQL 数据库 Azure SQL 托管实例 Azure Synapse Analytics Analytics Platform System (PDW)
返回指定日期和时间参数的 datetimeoffset 值。 返回值包含精度参数指定的精度,以及偏移参数指定的偏移量。
语法
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 数据类型。 偏移参数表示时区偏移量。 对于省略的偏移参数,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 参数的用法:
如果 fractions 的值为 5、precision 的值为 1,则 fractions 的值表示 5/10 秒。
如果 fractions 的值为 50、precision 的值为 2,则 fractions 的值表示 50/100 秒。
如果 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)