繁体   English   中英

SQL 服务器未转换字符串 YYYYMMdd 到日期

[英]SQL Server Not Casting String YYYYMMdd to Date

我有一个查询在服务器迁移之前工作正常,但现在不工作了。 我试图将所有日期转换为特定的月份和年份,但我不断收到此错误:

从字符串转换日期和/或时间时转换失败。

查看数据, InputDate中没有 null 个值,这是一个date数据类型列。 当我运行Concat() function 时,所有内容都被格式化为“YYYYMMdd”,但 CAST 和 CONVERT 都失败并出现相同的错误。

我的查询是否存在我没有发现的问题?

SELECT RandoSTUFF,
       DATEADD(day,2,CAST(CONCAT('2023','02',FORMAT(InputDate,'dd')) AS date)) AS MovedDate 
FROM a_table_ 

我预计问题是您的日期值接近月末,并且您正在尝试为更短的 2 月编写等效值。

因此,如果您的InputDate值为2022-12-31并运行问题中的代码,它将提取31并将其与其他值连接,您最终将尝试这样做:

CAST('20230231' as Date)

当然,没有这样的日期。

实际上,不清楚您是否希望将这样的输入输入到 map 到 2 月 28 日或 3 月 3 日。要解决此问题,您需要重新考虑问题,因此您只尝试将 map 输入到有效日期,并确保最终结果是更明确的定义。 这是使用日期/时间函数而不是从字符串组成日期几乎总是更好的众多原因之一。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM