首页 > 解决方案 > 如何将“工作日月日时间”转换为日期时间(YYYY-MM-DD)?

问题描述

我有一个fecha格式为字符串的列,格式为

Mon Feb 22 07:55:55 CET 2021

如何将其转换为 YYYY-MM-DD 等日期格式?我试过了CASTCONVERT...

而且我总是收到以下错误消息:

消息 241,级别 16,状态 1,第 4 行
从字符串转换日期和/或时间时转换失败

标签: sql-serverdatetime

解决方案


假设,正如我评论的那样,值总是 ddd MMM dd hh:mm:ss tz yyyy你可以做一些混乱的字符串操作来将值转换为有效的日期和时间数据类型。然后,您可以在表示层中随意格式化日期,因为它是强类型的:

SELECT V.DateString,
       TRY_CONVERT(datetime2(0),STUFF(STUFF(LEFT(STUFF(V.DateString,1,8,''),12),3,0,RIGHT(V.DateString,5)),3,0,SUBSTRING(V.DateString,4,4)),113) AS ConvertedDate
FROM (VALUES('Mon Feb 22 07:55:55 CET 2021'))V(DateString);

当然,这里真正的教训是不要varchar在数据库中存储日期和时间值。日期和时间数据类型的存在是有原因的;使用它们。


推荐阅读