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 Server 运行的系统的当前日期/时间,使用以下查询 -

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  |
+---------------------------------+
sql-date-functions.htm
广告