【发布时间】:2020-10-09 16:51:15
【问题描述】:
我有一个表,其中 service_date 是 char(8),例如 20191007。我将convert(date,service_date) 设置为 new_date,它似乎将其转换为日期数据类型。当我尝试使用convert(date,service_date) >= '2019-10-07' 时,出现“将日期和/或时间从字符转换为字符串时转换失败”错误。我需要进行哪些更改才能使其正常工作?
谢谢。
【问题讨论】:
-
请显示表架构和完整的命令运行。
-
使用 try_convert(date,service_date) 。我怀疑你有一些虚假数据。 try_convert 将返回 NULL 而不是抛出错误。识别问题记录... SELECT * FROM YOURTABLE where try_convert(date,service_date) is NULL
-
不使用日期和时间数据类型来存储日期和/或时间值的危险;人们存储的值不是有效的日期和时间值。我强烈建议修复您的数据模型。
-
修复您的模型 +1。将日期存储在日期字段中。 不要试图解决根本不应该存在的问题。 您还应该获得更好的性能(在大数据集上很明显)和更好地利用索引(如果存在)。如果您想以不同格式显示日期,则更灵活。
-
不幸的是,这些数据来自我所在的州人类服务部,所以我对它的存储方式没有发言权。
标签: sql sql-server date select where-clause