将日期时间字符串(3/24/2017 10:00:00 pm)转换为(3-24-2017 22:00:00)配置单元,即从12小时格式转换为24小时格式

vom3gejh  于 2021-06-02  发布在  Hadoop
关注(0)|答案(3)|浏览(331)

我在配置单元表中有一个数据类型为string的datetime字段。
如下所示:

datetime 3/24/2017 10:00:00 PM

尝试将其转换为配置单元所需的正确格式,还尝试将am/pm删除为24小时格式,但没有效果。

select from_unixtime(unix_timestamp(datetime,'mm-dd-yyyy HH:MM:SS')) from test_table
q0qdq0h2

q0qdq0h21#

格式为 MM-dd-yyyy HH:mm:ss aa ```
select from_unixtime(unix_timestamp(datetime,'MM-dd-yyyy HH:mm:ss aa')) from test_table;

t3psigkw

t3psigkw2#

您可以使用以下命令来实现这一点:

select from_unixtime(unix_timestamp(datetime,'MM/dd/yyyy hh:mm:ss aa'),'MM-dd-yyyy HH:mm:ss') from test_table;
6qftjkof

6qftjkof3#

“mm/dd/yyyy hh:mm:ss aa”不起作用。您可以通过以下方式存档:

FROM_UNIXTIME
(
    (
    CASE WHEN 
             datetime LIKE '%AM%' 
         THEN 
             UNIX_TIMESTAMP(datetime,'MM/dd/yyyy HH:mm:ss aa') 
         ELSE 
            (UNIX_TIMESTAMP(datetime,'MM/dd/yyyy HH:mm:ssaa') + (12 * 3600)) 
    END
    )
    ,'MM-dd-yyyy HH:mm:ss'
)

相关问题