C# 调整时区-将XML日期时间转换为SQL日期时间

C# 调整时区-将XML日期时间转换为SQL日期时间,c#,asp.net,sql,sql-server,xml,C#,Asp.net,Sql,Sql Server,Xml,我们在应用程序中使用TypedDataSet。数据以XML的形式传递给过程进行插入/更新 现在,在用数据填充DE之后,datetime保持不变,尽管添加了时区信息,如下所示 数据库中的日期:2009-10-2918:52:53.43 XML格式的日期:2009-10-29T18:52:53.43-05:00 现在,当我试图将下面的XML转换为SQLDateTime时,它调整了5个小时,我得到了 2009-10-29 23:52:53.430 作为最终输出,这是错误的。需要找到一种方法从下面的XM

我们在应用程序中使用TypedDataSet。数据以XML的形式传递给过程进行插入/更新

现在,在用数据填充DE之后,datetime保持不变,尽管添加了时区信息,如下所示

数据库中的日期:2009-10-2918:52:53.43 XML格式的日期:2009-10-29T18:52:53.43-05:00

现在,当我试图将下面的XML转换为SQLDateTime时,它调整了5个小时,我得到了

2009-10-29 23:52:53.430 作为最终输出,这是错误的。需要找到一种方法从下面的XML片段中提取datetime,忽略时区

我有以下格式的XML,带有时区差-05.00

<Order>
   <EnteredDateTime>2009-10-29T18:52:53.43-05:00</EnteredDateTime>
</Order>

2009-10-29T18:52:53.43-05:00

2009-10-2918:52:53.43与2009-10-29T18:52:53.43-05:00的时间不同。这是错误的第一步。从XML到SQL日期时间的转换是正确的


2009-10-2918:52:53.43与2009-10-29T18:52:53.43-05:00的时间不同。这是错误的第一步。从XML到SQL日期时间的转换是正确的


很抱歉,我只是用外部链接转发,但我发现这个资源最近很有用,而且总是喜欢权威信息


很抱歉,我只是用外部链接转发,但我发现这个资源最近很有用,而且总是喜欢权威信息


首先转换为键入的xsd日期时间,然后使用value方法将该值转换为sql日期时间

select convert(xml, '<DateTimeWithTimeZone>2012-09-15T16:08:14.787-05:00</DateTimeWithTimeZone>').value('xs:dateTime(/DateTimeWithTimeZone[1])', 'datetime')
选择convert(xml,'2012-09-15T16:08:14.787-05:00')。值('xs:dateTime(/DateTimeWithTimeZone[1]),'dateTime'))

首先转换为键入的xsd日期时间,然后使用value方法将该值转换为sql日期时间

select convert(xml, '<DateTimeWithTimeZone>2012-09-15T16:08:14.787-05:00</DateTimeWithTimeZone>').value('xs:dateTime(/DateTimeWithTimeZone[1])', 'datetime')
选择convert(xml,'2012-09-15T16:08:14.787-05:00')。值('xs:dateTime(/DateTimeWithTimeZone[1]),'dateTime'))

好的。我明白。那么解决办法是什么呢?我是否需要更改select语句?为什么“2009-10-29 18:52:53.43”转换为“2009-10-29T18:52:53.43-05:00”?我从未见过SQL Server以这种格式输出日期。DB->XML字符串发生在哪里?这就是问题所在。你能控制这个密码吗?我不能。我们正在使用企业库填充此数据集。确定。我明白。那么解决办法是什么呢?我是否需要更改select语句?为什么“2009-10-29 18:52:53.43”转换为“2009-10-29T18:52:53.43-05:00”?我从未见过SQL Server以这种格式输出日期。DB->XML字符串发生在哪里?这就是问题所在。你能控制这个密码吗?我不能。我们正在使用企业库来填充此数据集。