SQL 服务器,语法不正确,转换为日期时间

SQL Server, Incorrect syntax, Convert to datetime

使用 ASP 经典,我想将日期 Tue, 21 Apr 2020 12:23:00 GMT 转换为格式 AAAA-MM-DD HH:MM:SS 以将其插入 SQL Server 2008 数据库。

我的代码:

CONVERT('Tue, 21 Apr 2020 12:23:00 GMT', GETDATE(), 20)

我收到这个错误:

Incorrect syntax to 'Tue, 21 Apr 2020 12:23:00 GMT'.

请注意 SQL 服务器中的日期实际上没有任何内部字符串格式。相反,它们以二进制形式存储。这里的一个选择是采用输入时间戳的以下子字符串,然后使用 TRY_CONVERT 将其编组到 SQL Server:

内的真实日期时间
Tue, 21 Apr 2020 12:23:00 GMT  <-- start with this input
21 Apr 2020 12:23:00           <-- convert this string to datetime

示例代码:

WITH yourTable AS (
    SELECT 'Tue, 21 Apr 2020 12:23:00 GMT' AS dt
)

SELECT
    dt,
    TRY_CONVERT(datetime, SUBSTRING(dt, 6, LEN(dt) - 9)) AS dt_out
FROM yourTable;

Demo

编辑:

如果您使用的是早期版本的 SQL 服务器,那么您可以使用带有格式掩码 106 的 CONVERT,使用与上面相同的子字符串:

SELECT
    dt,
    CONVERT(datetime, SUBSTRING(dt, 6, LEN(dt) - 9), 106) AS dt_out
FROM yourTable;