如何处理从sql返回到ASP.NET C的奇怪日期#

时间:2012-01-19 23:38:21

标签: c# asp.net sql sql-server-2005

我的sql数据源中的日期格式为yyyy-mm-dd hh:mm:ss.nnn

当我查看SSMS中的数据时,它看起来很好

但是当我在C#中获得返回值时,它看起来像这样:

40927,7895138889

但是来源中的值是:

2011-12-29 21:52:47.427

我以前没见过,有人可以就可能发生的事情提出建议吗?

感谢。

编辑:我将这个值从sql server 2005返回到我的asp.net mvc 1.0 nerddinner教程网站

1 个答案:

答案 0 :(得分:2)

日期在SQL中存储为数字,在某个开始日期后x天(我认为在1753年)。不知何故,看起来您将返回的日期值存储在float字段中。尝试将您的40927添加到1/1/1753(1753年1月1日40,927天)并查看您是否获得了正确的价值

尝试此SQL命令

select cast( cast('1/1/1900' as dateTime) as float)

它将返回0,表示1900年1月1日是第一个日期。我怀疑字段类型是smalldatetime,它存储日期和时间,精度低于datetime数据类型。此数据类型的有效日期范围是从1900年1月1日到2079年6月6日。

该数字表示1900年1月1日之后的天数。小数部分是时间部分。试试这个:

select  cast(40927.7895138889 as dateTime)