如何在sql中将日期从德国转换为本地日期?

时间:2017-02-10 19:10:42

标签: sql sql-server sql-server-2014

我的表中有一列,其时间戳来自德国(Utc + 6)当地时间(Utc -1)。如何在当地时间转换所有这些日期时间?

3 个答案:

答案 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)中查找正确的代码页: