在 SQL Server 中将字符串 (25-11-2023 13:33:46+0000) 转换为日期时出现问题

Issue with converting string (25-11-2023 13:33:46+0000) to date in sql server

提问人:Win Sunday 提问时间:5/15/2023 更新时间:5/16/2023 访问量:1108

问:

我正在使用一个 API,部分响应是存储为字符串的日期值 ( 25-11-2023 13:33:46+0000 )。

我正在尝试将其(25-11-2023 13:33:46+0000)转换为日期时间或只是我的sql服务器数据库中的日期,并在标题中收到错误消息。

我使用过 Cast、Convert,但在转换时仍然收到错误。

演员('25-11-2023 13:33:46+0000' as date) 转换(日期, '25-11-2023 13:33:46+0000')

我将不胜感激

类型 时间格式 日期转换

评论


答:

0赞 jane doe 5/15/2023 #1

嗨,你为什么不把你的字符串日期时间分成子串,然后投射到日期?

即:

SELECT CONVERT(DATE,SUBSTRING('25-11-2023 13:33:46+0000',0, 11),105)

转换采用模式“yyyy-MM-dd”的日期,这就是为什么它在转换时显示错误的原因,或者您可以添加“105”作为对应于格式“dd-MM-yyyy”的参数。

[测试][1]

评论

0赞 Win Sunday 5/15/2023
你是真正的兄弟,这个工作!!
0赞 jane doe 5/16/2023
谢谢,如果您将其标记为答案。
0赞 Jeremy Tarrieu 5/15/2023 #2

您可以尝试以这种方式隔离日期:

SELECT 
    CONVERT(DATETIME, LEFT(column_name, 10))
FROM database_name.table_name;

评论

0赞 Win Sunday 5/15/2023
我试过了这个,但我仍然收到这个错误
0赞 Jeremy Tarrieu 5/16/2023 #3

假设时间存储在一个名为 times 的表中,一个名为 raw_date 的列包含您的初始数据,以及一个名为 date 的列,日期类型为空。

update times set date = str_to_date(LEFT(raw_date, 10), '%d-%m-%Y');

这只会让日、月和年与...根据第二个参数将字符串转换为日期。它在mariadb上对我有用。LEFT(raw, 10)str_to_date(..., '%d-%m-%Y)