【发布时间】:2017-05-03 16:41:00
【问题描述】:
试图将字符串类型的列转换为日期,我快疯了。
列名为StartDate,其中包含字符串日期格式dd/mm/yyyy。字段类型为varchar(3000)。
我尝试了以下方法:
CONVERT(datetime, StartDate, 103)
CAST(CONVERT(VARCHAR(10), StartDate, 110) AS DATE)
CONVERT(DATE, RIGHT(StartDate, 4) + '-' + SUBSTRING(StartDate, 4, 2) + '-' + LEFT(StartDate, 2), 126)
和其他类似的组合。
我不断收到“超出范围”和“转换失败”的错误消息。
有没有人有创造性的解决方案?
【问题讨论】:
-
那你有坏数据(比如
30/02/2015或12/13/2017等) -
第一个和第三个变体应该可以正常工作。第二个(样式 110)是另一种格式:mm-dd-yyyy。
-
约翰·卡佩莱蒂你是对的!我有很多 StartDate = 00/00/0000 的记录。我将使用 iif 函数将其更改为 null。非常感谢!
-
@inbal_bpr Try_Convert() 如果转换失败,将返回 NULL 值
标签: tsql date varchar sql-convert