当前位置: 代码迷 >> Sql Server >> 从 char 数据类型到 datetime 数据类型的转换导致 datetime 值越界解决思路
  详细解决方案

从 char 数据类型到 datetime 数据类型的转换导致 datetime 值越界解决思路

热度:422   发布时间:2016-04-27 15:13:40.0
从 char 数据类型到 datetime 数据类型的转换导致 datetime 值越界
当运行条件加上where   Convert(DateTime,Convert(varchar(10),Convert(varchar(4),Year(GetDate()))   +   '- '   +SubString(BirthDay   ,   1,   2)  
+   '- '   +SubString(BirthDay   ,   3,   2)))   Between   '2007-08-27   00:00:00 '   And   '2007-08-27   23:59:59 '时出现该错误,而我BirthDay   字段的数据形式为:06-21
不改变语句,应该是区域设置与排序规则的问题。请教各位大虾的帮助。
谢谢


------解决方案--------------------
--不需要那么多convert,convert来convert去把人都convert晕了:

where datename(year, getdate()) + '- ' + Birthday Between '2007-08-27 00:00:00 ' And '2007-08-27 23:59:59 '

------解决方案--------------------
BirthDay 字段数据有问题,不是有效的时间,可能是空字符串什么的
------解决方案--------------------
越界,说明你BirthDay字段数据有问题。
检查保存代码
------解决方案--------------------
有datename函数就不要用convert拉,看的晕~~
------解决方案--------------------
where Convert(DateTime,Convert(varchar(10),Convert(varchar(4),Year(GetDate())) + '- ' +SubString(BirthDay , 1, 2)
+ '- ' +SubString(BirthDay , 4, 2))) Between '2007-08-27 00:00:00 ' And '2007-08-27 23:59:59 '
------------
而我BirthDay 字段的数据形式为:06-21--要从这个字段取日期,应该是从第四个取啊
  相关解决方案