首页 > 解决方案 > SQL Server 区分看似相等的日期字符串并引发转换错误

问题描述

从 .csv导入格式的日期字符串后,dd.(m)m.yyyy我似乎无法将它们转换为日期。

使用CONVERT (date, DATE_COLUMN, 104)会导致错误:

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

但是,如果我尝试转换从列选择输出 ( CONVERT (date, '20.5.2018', 104)) 复制的值,则代码对于列中的每个单个值都可以正常工作。

修剪琴弦没有用。我也尝试过手动重写源文件中的日期字符串,但结果是一样的。

总结(使用 1 个示例值):

select CONVERT(date, DATE_COLUMN, 104)  
from dbo.table

返回:

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

select DATE_COLUMN 
from dbo.table

返回:2018 年 5 月 20 日

select CONVERT(date,'20.5.2018', 104) 

返回:'2018-5-20'

我希望 SQL Server 以相同的方式对待每个转换。虽然有一种解决方法(将字符串拆分为日期部分并将它们组合成日期),但我不明白为什么转换首先会失败。任何帮助表示赞赏。

标签: sqlsql-servertype-conversiondate-conversion

解决方案


用于try_convert()查找问题值:

select DATE_COLUMN 
from dbo.table
where try_convert(date, DATE_COLUMN, 104) is null and
      DATE_COLUMN is not null;

推荐阅读