【发布时间】:2019-02-18 18:44:36
【问题描述】:
从 .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 以相同的方式处理每个转换。虽然有一种解决方法(将字符串拆分为日期部分并将它们组合成日期),但我不明白为什么转换首先会失败。任何帮助表示赞赏。
【问题讨论】:
-
每一行都有
20.5.2018的值吗? -
select DATE_COLUMN from dbo.table WHERE TRY_CONVERT(date,DATE_COLUMN, 104) IS NULL返回什么? -
@Lamak - 20.5.2018 只是一个示例值。
-
在您的查询
select DATE_COLUMN from dbo.table的返回值中,DATE_COLUMN值前面是否真的有一个-(减号)?那将是一个危险信号... -
又一个很好的例子说明了为什么你不应该将日期存储为字符串。选择正确的数据类型非常重要。 sqlblog.org/2009/10/12/…
标签: sql sql-server type-conversion date-conversion