根据SQL中的时区描述将给定的日期时间转换为UTC时间
我有如下数据。第一列的类型为根据SQL中的时区描述将给定的日期时间转换为UTC时间,sql,sql-server,datetime,Sql,Sql Server,Datetime,我有如下数据。第一列的类型为datetime,第二列的类型为nvarchar,是相应的时区信息 07/04/2012 14:20:45 EASTERN STANDARD TIME 07/04/2012 13:55:10 INDIAN STANDARD TIME 07/04/2012 10:55:00 CENTRAL STANDARD TIME 2012年4月7日14:20:45东部标准时间 2012年4月7日13:55:10印度标准时间 2012年4月7日10:55:00中央标准时间
datetime
,第二列的类型为nvarchar
,是相应的时区信息
07/04/2012 14:20:45 EASTERN STANDARD TIME
07/04/2012 13:55:10 INDIAN STANDARD TIME
07/04/2012 10:55:00 CENTRAL STANDARD TIME
2012年4月7日14:20:45东部标准时间
2012年4月7日13:55:10印度标准时间
2012年4月7日10:55:00中央标准时间
如何将所有行的datetime列值转换为UTC时间?试试这个
UPDATE dbo.YourTable
SET DateTimeColumn=CASE TimeShift
WHEN N'EASTERN STANDARD TIME'
THEN DATEADD(hour,EasternTimeShift,DateTimeColumn)
WHEN N'INDIAN STANDARD TIME'
THEN DATEADD(hour,IndianTimeShift,DateTimeColumn)
...
ELSE DateTimeColumn
END
我可以这样解决:CLR SQL (配置数据库)
谢谢你,Igor,有更好的方法吗?也不会考虑DST。这在C#中是完全可以实现的,但在SQL中我需要它。@VenkatRenukaPrasad什么是DST?如果您有一个C#函数,您可以在T-SQL中创建相同的函数,并在
SET
statement中使用它。DST是夏令时。它随时区的不同而变化,甚至经常随时区的不同而变化。C中的DateTimeOffset和TimeZoneInfo自动处理DST。