如何在SQL中将int(yyyymmdd)转换为时间戳?

时间:2019-02-07 00:24:36

标签: sql postgresql hive amazon-redshift

我正在使用Redshift,并且在表中有一个字段,类型为int,代表一天的日期。例如,int是 20180215 。格式为yyyymmdd。

我想知道使用SQL将int转换为时间戳(yyyy-mm-dd hh:mm:ss)的最有效方法是什么。

2 个答案:

答案 0 :(得分:2)

使用to_timestamp().

select to_timestamp(20180215::text, 'YYYYMMDD')::timestamp

    to_timestamp     
---------------------
 2018-02-15 00:00:00
(1 row)

该函数返回timestamp with time zone。结果取决于当前时区设置。您可以将结果强制转换为timestamp,以跳过时区部分。

答案 1 :(得分:0)

我认为这是最好的

import datetime
date_format = "%Y%m%d"
timestamp = datetime.datetime.strptime("20180215", date_format).timestamp()
timestamp
# 1518620400.0

您可以通过使功能变得更好

def date_2_timestamp(date):
    from datetime.datetime import strptime
    return strptime(date, "%Y%m%d").timestamp()