sql数据库筛选出生日期,但是提示从 nvarchar 数据类型到 datetime 数据类型的转换产生一个超出范围的值

最好能给我一个合适的判断语句。
2025-02-26 02:50:55
推荐回答(1个)
回答1:

说明你的表 cdsgus 中的 birthday 字段的值中有不是正常日期格式的数据,如:1980/01, 1980.01, 最好是将数据整成日期格式,想偷懒那就写脚本时处理,
1 先看是否为日期格式,如果是,直接用 birthday 比较
2 如果不是日期格式,看看长度
3 根据长度具体处理, 如:长 7 位,后面加个天数...

如:
SELECT * FROM cdsgus
WHERE CASE ISDATE(birthday) WHEN 1 THEN birthday ELSE CASE LEN(birthday) WHEN 7 THEN replace(birthday, '.', '/') + '/01' ELSE '1901/01/01' END END >'1980/01/01'