将datetime转换为UTC值mssql

Mok*_*eld 2 sql-server timezone datetime sql-server-2008

我有这样的查询:

SELECT table.a, table.b, table.c from Table table
Run Code Online (Sandbox Code Playgroud)

我如何将"table.b"转换为UTC时间,只需将CAST添加到查询中?

SELECT 
  table.a, 
  **%CAST_TO_UTC_FUNCTION to table.b%**, 
  table.c 
from Table table
Run Code Online (Sandbox Code Playgroud)

我无法单独抛出它并声明局部变量.

Cri*_*scu 7

您可以按如下方式编写查询:

SELECT 
  table.a, 
  dateAdd(
    second,
    dateDiff(second, getDate(), getUtcDate()),
    table.b) as b_converted_to_UTC,
  table.c 
from Table table
Run Code Online (Sandbox Code Playgroud)

这会将列中的值转换b为UTC,方法是将这些值与本地日期(getDate())和UTC日期(getUtcDate())之间当前存在的差异相加.

为了使上述查询起作用,必须满足以下条件:

  • 存储在列中的日期b必须以当地时间表示
  • 应正确配置服务器日期/时区

  • 这假设*current*offset适用于所有数据.如果时区具有夏令时,则此操作不会始终如一. (2认同)