在 Presto 中向日期添加小时

jbu*_*_13 4 sql datetime presto trino

在 Presto db 表中,我有两个字符串字段,一个是“2022-01-01”形式的日期,另一个是 22:00 形式的小时。我试图将这两个元素组合成一个正确的时间戳,包括日期、小时、分钟、秒。我怎样才能做到这一点?

到目前为止我尝试过的

SELECT DATE_ADD('hour', 22, DATE(d) ) AS dt
FROM table
Run Code Online (Sandbox Code Playgroud)

但是,我收到错误“小时”不是正确的日期字段。然而,从文档来看,我的论点似乎按正确的顺序排列。 https://prestodb.io/docs/current/functions/datetime.html

Gur*_*ron 7

您需要将日期转换为时间戳:

-- sample data
WITH dataset(x, y) AS (
    VALUES (22,  '2022-01-01')
)

-- query
SELECT date_add('hour', x, cast(date(y) as timestamp))
FROM dataset
Run Code Online (Sandbox Code Playgroud)

或者将字符串解析为时间戳:

SELECT date_add('hour', x, date_parse(y, '%Y-%m-%d'))
FROM dataset
Run Code Online (Sandbox Code Playgroud)

输出:

_col0
2022-01-01 22:00:00.000