Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
根据SQL中的时区描述将给定的日期时间转换为UTC时间_Sql_Sql Server_Datetime - Fatal编程技术网

根据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。