sql-server - 如何将“工作日月日时间”转换为日期时间(YYYY-MM-DD)?
问题描述
我有一个fecha
格式为字符串的列,格式为
Mon Feb 22 07:55:55 CET 2021
如何将其转换为 YYYY-MM-DD 等日期格式?我试过了CAST
,CONVERT
...
而且我总是收到以下错误消息:
消息 241,级别 16,状态 1,第 4 行
从字符串转换日期和/或时间时转换失败
解决方案
假设,正如我评论的那样,值总是 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
在数据库中存储日期和时间值。日期和时间数据类型的存在是有原因的;使用它们。
推荐阅读
- microsoft-teams - Teams 选项卡中的呼叫控制
- powershell - Powershell 4.0 - 新的 GUID 生成问题
- laravel - 如何在tymon JWT Auth上登录时制作令牌和刷新令牌
- ssas - 一个大的 SSAS 表格还是多个表格?
- javascript - 如何在 PHP 中使用通过 Ajax POST 发送的数据
- c# - ML.NET 如何从 linq 查询中获取 IDataView?
- git - “dvc add -external S3://mybucket/data.csv”即使在提供正确的远程缓存配置后也因访问错误而失败
- php - 如何使用多维数组 PHP
- apache-spark - Apache Beam + SparkRunner:如何传递“spark.yarn.queue”参数
- python - PYGame - 如何通过按键停止和关闭窗口?