presto - 获取天数间隔(不是日期)

add*_*ted 4 sql presto

如何获得 prestodb 的天数间隔?我可以转换为毫秒并将这些转换为天数,但我正在寻找是否有更短的方法来做到这一点。

示例:我想查看自插入表中的第一行以来已经过了多少天。

SELECT 
    to_milliseconds(date(current_date) - min(created)) / (1000*60*60*24) as days_since_first_row
FROM
    some_table
Run Code Online (Sandbox Code Playgroud)

我希望看到的:(以下之一)

 SELECT 
        to_days(date(current_date) - min(created)) / (1000*60*60*24) as days_since_first_row
        ,cast(date(current_date) - min(created)) as days) as days_since_first_row2
    FROM
        some_table
Run Code Online (Sandbox Code Playgroud)

Pio*_*sen 7

使用减法获得一个间隔,然后使用day该间隔来获得经过的天数。

presto:default> select day(current_date - date '2018-07-01');
 _col0
-------
    86
Run Code Online (Sandbox Code Playgroud)

相关文档位于https://trino.io/docs/current/functions/datetime.html


0x2*_*7r9 6

不幸的是,夏令时打破了公认答案的解决方案。由于夏令时和作为时间戳的下限函数DAY(DATE '2020-09-6' - DATE '2020-03-09')DAY(DATE '2020-09-6' - DATE '2020-03-08')它们都等于 181 DAY

相反,使用DATE_DIFF

DATE_DIFF('day', DATE '2020-09-6', DATE '2020-03-09')
Run Code Online (Sandbox Code Playgroud)