SQL 将样式为 d-MMM-yyyy 的字符串日期转换为 DATE

SQL convert String date of style d-MMM-yyyy to DATE

我正在导入 CSV 文件,其中一个字段是非标准日期字符串,其中包含 7-Dec-2021

等条目

有什么想法可以将其转换为 DATETIME 对象,我可以将其插入到我的 SQL table 中吗?标准 CAST/CONVERT 无效。

微软 SQL 服务器 2012 - 11.0.2100.60

TRY_CONVERT 似乎在这里工作:

SELECT TRY_CONVERT(datetime, '7-Dec-2021');  -- 2021-12-07 00:00:00.000

编辑:

一旦我们将破折号替换为空格,您输入的日期几乎与格式掩码 106 匹配。考虑这个解决方案:

SELECT dt, CONVERT(datetime, REPLACE(dt, '-', ' '), 106) AS dt_out
FROM yourTable;

这会在 SQL Server 2014 上为 dt_out 输出 2021-12-07 00:00:00.000,并且在 SQL Server 2012 上的行为应该相同。

猜测您使用的LOGIN语言不是基于英语的,因此'Dec'(and/or 其他月份)不被识别为有效的月份名称。

您可以指定要用于批处理的语言,然后 CONVERT:

SET LANGUAGE BRITISH;

SELECT TRY_CONVERT(date,'7-Dec-2021',106);