presto-获取天数间隔(而非日期)

时间:2018-09-25 09:44:41

标签: sql presto

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

示例:我想看看从表中的第一行插入多少天了。

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

我希望看到的:(下面的1个)

 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

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

不幸的是,夏令时使解决方案脱离了公认的答案。由于夏时制,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')