我正在尝试在托管实例中执行以下查询。
SELECT
T.name
FROM sys.tables T
WHERE T.name NOT IN ('ElsevierExtracts')
AND CAST(RIGHT(T.name,6) AS DATE) < DATEADD(DAY,-8,GETDATE())
AND T.type = 'U'
它引发如下错误:
从字符串转换日期和/或时间时转换失败
该查询包含在Execute SQL任务的SSIS包中,但由于转换而出现错误。
使用TRY_CAST
或TRY_CONVERT
代替普通CAST
通过使用类似条件,TRY_CONVERT(DATE, RIGHT(T.name,6) ) < DATEADD(DAY,-8,GETDATE())
您将不会因表名不匹配而出错。
如下更改您的查询。
SELECT
T.name
FROM sys.tables T
WHERE T.name NOT IN ('ElsevierExtracts')
AND TRY_CONVERT(DATE, RIGHT(T.name,6) ) < DATEADD(DAY,-8,GETDATE())
AND T.type = 'U'
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句