Работа с литералом Interval для псевдонимов в Snowflake - PullRequest
0 голосов
/ 17 октября 2019

У меня такой запрос:

select to_date(current_date - interval 'b.a day') as date from (select 1 as a) as b

Ожидаемым результатом должен быть интервал «1 день», который затем вычислит разницу между датами. Вместо этого он выдает следующую ошибку:

SQL compilation error: syntax error line 1 at position 0 unexpected 'b'.

Ответы [ 2 ]

1 голос
/ 17 октября 2019

Пока вам нужны только даты / дни, вы можете упростить это:

select to_date(current_date()) - b.a as date from (select 1 as a) as b;
0 голосов
/ 17 октября 2019

Строки интервала не анализируются для понимания ссылок на столбцы. Однако вы можете использовать интервалы в арифметике, поэтому это должно работать:

select current_date - b.a * interval '1 day' as date
from (select 1 as a) b

to_date() является избыточным для выражения, которое уже является датой.

...