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