我的表中有一列,其时间戳来自德国(Utc + 6)当地时间(Utc -1)。如何在当地时间转换所有这些日期时间?
答案 0 :(得分:1)
我们德国和中央时区之间有-7小时
CT (-6)
Berlin (+1)
如果您的专栏是日期时间,请使用以下
Select DATEADD(HOUR,-7,[DATECOLUMN])
更新1
考虑@bdate和@edate是夏令时的开始和结束日期,以便您可以使用此查询
Select case when DATEADD(HOUR,-7,[DATECOLUMN]) between @bdate and @edate Then
DATEADD(HOUR,-8,[DATECOLUMN]) else
DATEADD(HOUR,-7,[DATECOLUMN]) end
答案 1 :(得分:1)
我认为将UTC日期时间转换为本地日期时间的正确方法是使用CLR函数。你可以在下面找到一个例子。
https://www.mssqltips.com/sqlservertip/2339/converting-utc-to-local-time-with-sql-server-clr/
答案 2 :(得分:0)
如果您的数据采用字符串格式,例如" dd.mm.yy,"那么你将使用代码页104来告诉SQL如何将日期从字符串解析为DateTime格式。
CONVERT(DateTime, DateField, 104)
如果您的字符串采用其他格式,请在表here (CAST and CONVERT in T-SQL)中查找正确的代码页: