【发布时间】:2022-01-22 02:52:23
【问题描述】:
我想将格式为mm/dd/yyyy 的列转换为日期时间,但是当我这样做时出现以下错误:
The conversion of a varchar data type to a datetime data type resulted in an out-of-range value.
我在其他帖子中发现这意味着某些日期没有意义,例如10/35/2021。我试图通过切片 varchars 来找到错误的日期以获取 SUBSTRING(date, 3, 2) 的日期,但事实证明有些日期的格式为 m/d/yyyy,所以当我切片时,我会得到类似 1/ 的内容。
我不知道如何找到错误的日期,以及如何(即使有错误的日期)将所有内容转换为日期时间。
谢谢!
【问题讨论】:
-
所以有些数据在
MM/dd/yyyy,而其他数据在M/d/yyyy?这确实是您需要修复的设计。 -
您认为“2021 年 1 月 2 日”之类的正确解释是什么?是 1 月 2 日还是 2 月 1 日?你只能希望能找到days > 31这样明显的问题,但这并不意味着你成功转换其他值是正确的。
-
要检测错误的日期,您可以使用TRY_CAST,当演员出现问题时,它会返回
NULL -
@SM 或者它认为可能是 1 月 2 日,因为它位于美国。
标签: sql sql-server datetime format