将 varchar 转换为日期时间格式

问题描述 投票:0回答:1

我正在从事数据移动,其中源是 MongoDB,目标是 Redshift。表中有一个日期列,该列的数据类型是 varchar。我面临的问题是,我得到两种不同格式的日期,如下所示。

格式1:

Mon Apr 03 2023 10:05:01 GMT+0000 (Coordinated Universal Time)
Tue Mar 21 2023 08:15:01 GMT+0000 (Coordinated Universal Time)
Tue Mar 21 2023 12:45:01 GMT+0000 (Coordinated Universal Time)

格式 2:

2023-08-01 10:20:15.243
2023-08-01 06:30:15.875
2023-08-01 10:10:15.250
2023-08-01 07:45:01.401

我们使用 Dbeaver 作为我的 sql 工具,并尝试使用正则表达式删除 format1 中的字符串部分,并对即将到来的数据应用相同的逻辑,但我无法获得正确的查询。我想将格式 1 的行更改为格式 2,并且我还希望继续使用格式 2 的数据。请帮忙。

postgresql amazon-redshift datetime-format
1个回答
0
投票

试试这个:

UPDATE your_table
SET date_column = 
    CASE 
        WHEN date_column LIKE '%GMT%' THEN 
            TO_CHAR(
                TO_TIMESTAMP(
                    SUBSTRING(date_column, 5, 20), 
                    'Mon DD YYYY HH24:MI:SS'
                ), 
                'YYYY-MM-DD HH24:MI:SS.MS'
            )
        ELSE date_column
    END;

请将 your_table 和 date_column 替换为您的实际表名和列名。

另请注意,此查询假设第一种格式的所有日期都遵循相同的模式。如果有些日期不遵循此模式,您可能需要相应地调整 SUBSTRING 函数。

© www.soinside.com 2019 - 2024. All rights reserved.