日期:2014-05-18  浏览次数:20559 次

数据库日期输入没有加引号引起的灾难!!
在SQLServer中输入日期的时候应该加上引号的,如 '2007-1-1 ',如果只是输入了20007-1-1,结果显示是其他的日期,绝对不是本来的日子的.我就刚刚遇到了这样的事情,输入完了才发现数据都这样了啊,我是重新把数据库删掉了重新来的,幸好保存了语句只要加引号就行了,还是费了很多时间的.因为数据库的关系很多的!
请问大家遇到了这样的事情,不删掉数据库,怎么做到啊??
用delete   语句??先要禁止约束的吗??

------解决方案--------------------
不加引号会把2007-1-1当成一个减法运算的,你可以算出那个时间的

select cast(2007-1-1 as datetime)
结果:
1905-06-29 00:00:00.000

就是据1900-1-1 2005天的那天
------解决方案--------------------
select datediff(day, '1900-1-1 0:00:00 ', '1905-06-29 0:00:00 ')

结果:没有办法算
因为只知道 年-月-日= 2005
这种可能有很多
2007-1-1=2005
2008-1-2=2005