在where子句中将日期和/或时间从字符转换为字符串时,转换失败

oprakyz7  于 2021-07-26  发布在  Java
关注(0)|答案(1)|浏览(289)

我有一张table,上面的服务日期是char(8),比如20191007。我做了一个 convert(date,service_date) 作为新的日期,它似乎将其转换为日期数据类型。当我尝试使用 convert(date,service_date) >= '2019-10-07' 我得到“转换失败时,转换日期和/或时间从字符到字符串”错误。我需要改变什么才能让它工作?
谢谢。

2hh7jdfx

2hh7jdfx1#

存储日期的字符串格式可以根据sring文本进行过滤,因此我只使用:

service_date >= '20191007'

这比使用转换函数更有效,因为它可以利用列上的索引(如果有的话)。
但是,正如john cappelletti所评论的,如果您的数据格式不正确,那么这可能会产生未被排除的结果。在这种情况下,使用 try_cast() :

try_cast(service_date as date) >= '20191007'
``` `try_cast()` 尝试将字符串转换为目标数据类型,并产生 `null` 如果转换失败。

相关问题