SQL TODATETIMEOFFSET() 函数
SQL TODATETIMEOFFSET() 函数是一个日期和时间函数,它使用用户指定的datetime2和时区来返回一个datetimeoffset值。
TODATETIMEOFFSET函数有两个输入参数,一个是目标时区偏移量,一个是没有偏移的日期和时间值,它们简单地组合在一起以产生一个DATETIMEOFFSET值。该函数的输出是一个datetimeoffset数据类型的值。
我们可以以分钟或小时的格式提供时区。如果以分钟提供,则使用整数(-4);如果以小时提供,则使用字符串(’+06.00’)。时区的范围是+14至-14(小时)。
语法
SQL TODATETIMEOFFSET() 函数的语法如下所示:
TODATETIMEOFFSET(expression,time_zone)
参数
该函数只接受两个参数。具体描述如下:
- expression - 要解析为datetime2值的表达式。
-
time_zone - 表示时区偏移的时间偏移或带符号整数范围,范围从+14到-14。
示例
在以下示例中,我们将使用以下查询更改分钟的时区偏移量。
在此示例中,我们将当前时区更改为-150分钟。
SELECT TODATETIMEOFFSET (GETDATE(), -150) AS Result;
输出
执行上述查询时,输出如下:
+--------------------------------+
| Result |
+--------------------------------+
| 2023-02-20 12:52:55.827 -02:30 |
+--------------------------------+
示例
让我们看看另一种情况,我们将使用正分钟来改变时区,使用以下查询语句:
SELECT TODATETIMEOFFSET (GETDATE(), 360) AS Result;
输出
当查询执行时,将生成以下输出:
+--------------------------------+
| Result |
+--------------------------------+
| 2023-02-20 15:22:33.533 +06:00 |
+--------------------------------+
示例
在以下示例中,我们将使用datetime2值明确设置变量,并应用TODATETIMEOFFSET()到该值,并通过使用以下查询比较这两个值 –
DECLARE @DATE datetime2 = '2023-02-20 02:33:18.0000000';
SELECT @DATE AS 'Original Date',
TODATETIMEOFFSET( @DATE, '+06:00' ) AS '+06:00';
输出
执行上述查询后,输出如下:
+-----------------------------+-------------------------------------+
| Original Date | +06:00 |
+-----------------------------+-------------------------------------+
| 2023-02-20 02:33:18.0000000 | 2023-02-20 02:33:18.0000000 +06:00 |
+-----------------------------+-------------------------------------+
示例
让我们来看另一个示例,在这个示例中,我们将使用以下查询将时区偏移设置为整数。
SELECT TODATETIMEOFFSET( '2023-02-20 02:33:18.0000000', -150 ) AS Result;
输出
上述查询的输出如下所示:
+------------------------------------+
| Result |
+------------------------------------+
| 2023-02-20 02:33:18.0000000 -02:30 |
+------------------------------------+
示例
让我们来看一个示例,我们使用 SYSDATETIMEOFFSET() 函数作为日期表达式,它可以通过以下查询生成SQL服务器运行的系统的当前日期/时间。
SELECT SYSDATETIMEOFFSET() AS 'Current Date',
TODATETIMEOFFSET( SYSDATETIMEOFFSET(), '+06:00' ) AS '+06:00';
输出
当查询执行时,它将生成如下所示的输出 −
+------------------------------------+------------------------------------+
| Current Date | +06:00 |
+------------------------------------+------------------------------------+
| 2023-02-20 14:50:06.8050290 +05:30 | 2023-02-20 14:50:06.8050290 +06:00 |
+------------------------------------+------------------------------------+
示例
在以下示例中,我们使用 DATETIMEOFFSET() 函数,并通过以下查询使用TODATETIMEOFFSET()函数来检索偏移值 –
DECLARE @DATE DATETIMEOFFSET = '2023-02-20 14:50:06.8050290 +04:30';
SELECT @DATE AS 'Original Date',
TODATETIMEOFFSET( @DATE, '+06:00' ) AS '+06:00';
输出
运行上述查询后,将生成以下输出−
+------------------------------------+------------------------------------+
| Original Date | +06:00 |
+------------------------------------+------------------------------------+
| 2023-02-20 14:50:06.8050290 +04:30 | 2023-02-20 14:50:06.8050290 +06:00 |
+------------------------------------+------------------------------------+
示例
在下面的示例中,我们使用 DATETIMEOFFSET() 函数,并通过使用以下查询来使用TODATETIMEOFFSET()函数检索偏移值 –
DECLARE @DATE DATETIMEOFFSET = '2023-02-20 14:50:06.8050290 +04:30';
SELECT @DATE AS 'Original Date',
TODATETIMEOFFSET( @DATE, '+06:00' ) AS '+06:00';
输出
运行以上查询,将生成如下所示的输出结果−
+------------------------------------+------------------------------------+
| Original Date | +06:00 |
+------------------------------------+------------------------------------+
| 2023-02-20 14:50:06.8050290 +04:30 | 2023-02-20 14:50:06.8050290 +06:00 |
+------------------------------------+------------------------------------+
示例
看下面的示例,我们将使用小时来改变时区,通过运行以下查询:
SELECT TODATETIMEOFFSET (GETDATE(), '+05:30') AS Result;
输出
如果我们执行上述查询,结果将产生如下:
+--------------------------------+
| Result |
+--------------------------------+
| 2023-02-20 15:12:41.213 +05:30 |
+--------------------------------+
示例
下面是另一个场景,我们将使用负数小时来改变时区,使用以下查询:
SELECT TODATETIMEOFFSET (GETDATE(), '-06:00') AS Result;
输出
执行上述查询后,将生成如下所示的输出结果。
+---------------------------------+
| Result |
+---------------------------------+
| 2023-02-20 15:16:30.247 -06:00 |
+---------------------------------+