You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL Server本地时间转UTC存储失败求助:转换语句未生效

SQL Server本地时间转UTC时间解决方案

你的问题出在没有先将拼接后的本地时间绑定到对应的本地时区,直接使用AT TIME ZONE 'UTC'只会把拼接出的时间视为UTC时间,不会执行时区转换。

正确步骤

要完成本地时间到UTC的转换,需要三步:

  • 拼接日期和时间得到无时区的本地datetime2
  • 将该时间标记为本地时区的带时区时间(datetimeoffset类型)
  • 转换为UTC时区时间

示例代码

假设你的本地时区是中国标准时间(UTC+8)(对应你给出的10:31转04:31的时差),代码如下:

-- 拼接本地日期和时间
DECLARE @LocalTime datetime2 = CONVERT(datetime2, CONVERT(varchar, @VitalReadingDate) + ' ' + CONVERT(varchar, @VitalReadingTime));

-- 转换为UTC时间
SELECT @LocalTime AT TIME ZONE 'China Standard Time' AT TIME ZONE 'UTC' AS UtcTime;

关键说明

  • 第一个AT TIME ZONE 'China Standard Time':告诉SQL Server“这个无时区的时间属于中国标准时区”,将其转换为带时区的datetimeoffset类型
  • 第二个AT TIME ZONE 'UTC':将带时区的时间转换为UTC时区的时间
  • 如果你本地时区不是中国标准时间,替换为对应的时区名称(可通过SELECT name FROM sys.time_zone_info查询所有支持的时区)

简化写法

也可以合并成一行:

SELECT 
    CONVERT(datetime2, CONVERT(varchar, @VitalReadingDate) + ' ' + CONVERT(varchar, @VitalReadingTime))
    AT TIME ZONE 'China Standard Time' 
    AT TIME ZONE 'UTC' AS UtcTime;

内容的提问来源于stack exchange,提问作者ravi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 09:04:59