我的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教程网站
答案 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)