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

presto - getting days interval (not date)

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

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

SELECT 
    to_milliseconds(date(current_date) - min(created)) / (1000*60*60*24) as days_since_first_row
FROM
    some_table

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

 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

使用减法获得间隔,然后对间隔使用 day 获得经过的天数。

presto:default> select day(current_date - date '2018-07-01');
 _col0
-------
    86

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

不幸的是,夏令时打破了已接受答案的解决方案。由于夏令时,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')