In Presto SQL, unlike regular SQL, intervals must be created with inverted commas:
INTERVAL '1' DAY
rather than
INTERVAL 1 DAY
I am trying to generate a set of dates as described here: https://stackoverflow.com/a/2157776/2388930, but am encountering an issue with
INTERVAL (a.a + (10 * b.a) + (100 * c.a)) DAY
How might this be achieved? I tried
parse((a.a + (10 * b.a) + (100 * c.a)) as varchar)
but this was not successful.
You can convert timestamp to date with cast(col as date) or date(col) .
The IS NULL and IS NOT NULL operators test whether a value is null (undefined). Both operators work for all data types.
Presto is an open source, distributed SQL query engine designed for fast, interactive queries on data in HDFS, and others. Unlike Hadoop/HDFS, it does not have its own storage system. Thus, Presto is complimentary to Hadoop, with organizations adopting both to solve a broader business challenge.
This is not a direct answer to the question, but if the goal is to replicate the results described in the linked Stack Overflow question, generate days from date range, here is an alternative method to generate a sequence of dates in Presto:
SELECT CAST(date_column AS DATE) date_column FROM (VALUES (SEQUENCE(FROM_ISO8601_DATE('2010-01-20'), FROM_ISO8601_DATE('2010-01-24'), INTERVAL '1' DAY) ) ) AS t1(date_array) CROSS JOIN UNNEST(date_array) AS t2(date_column) ;
Output:
date_column ------------- 2010-01-20 2010-01-21 2010-01-22 2010-01-23 2010-01-24
You can also use other INTERVAL
values besides DAY
and different step sizes besides '1'
.
*Adapted from this issue comment, https://github.com/prestodb/presto/issues/2169#issuecomment-68521569.
I ended up using date_add:
date_add('day', -(a.a + (10 * b.a) + (100 * c.a)), date_trunc('day', now()))
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With