【发布时间】:2023-04-03 00:45:01
【问题描述】:
我正在努力处理 SQL 查询 - 一个基本的选择语句,在选择输出中具有 UTC 时间转换。我已经对此进行了大量搜索,并且通过所有这些搜索都得出了以下查询,但它似乎对我不起作用。
SELECT [Id]
,[BaseSource]
,[Source]
,[Output]
,[SessionId]
,[Timestamp]
,(SELECT DATEADD(MILLISECOND,DATEDIFF(MILLISECOND,getutcdate(),GETDATE()),[Timestamp])) as LocalTime
FROM [MYDB].[dbo].[SystemOutput]
ORDER BY [Timestamp] DESC
这一行是魔法应该发生的地方,但是我得到了 Timestamp 列值的完全匹配,所以根本没有发生转换:
(选择 DATEADD(MILLISECOND,DATEDIFF(MILLISECOND,getutcdate(),GETDATE()),[时间戳]))
有谁知道如何让它工作?
谢谢
【问题讨论】:
-
这不是一个好方法。它假定您需要 SQL Server 的时区。此外,它假定 current 偏移量适用于所有值 - 在许多情况下它不是(例如,由于 DST)。你能告诉我们你真正想要做什么(它的“本地”是什么?)另外,你使用的是什么版本的 SQL Server?
-
您好,感谢您的回复。首先,我想强调这只是为了我自己的个人/开发用途,以使我的查询和这个特定表的输出更清晰。时间戳。通常,UTC 时间的任何转换都发生在我们的应用程序级别,我绝对不会在 SQL 查询中进行日期时间转换。我要做的是从 SELECT 输出中的时间戳获取本地(或 PST 时间)。我正在使用我们的生产 SQL 2016 服务器。
标签: sql-server tsql timezone