从 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--要从这个字段取日期,应该是从第四个取啊