Ошибка при назначении выражения dateadd с использованием «наносекунды» переменной в SQL (Snowflake) - PullRequest
0 голосов
/ 25 октября 2019

Я пытаюсь присвоить результат выражения dateadd переменной в SQL-скрипте Snowflake.

Назначение отлично работает, когда я использую любую date_or_time_part EXCEPT наносекунда . Когда я использую наносекунду, я получаю следующую ошибку:

Unsupported feature 'assignment from non-constant source expression'**

Есть ли причина, по которой наносекунда ведет себя по-другому, или это ошибка?

-- 'second' is successfully set into the variable
set foo = dateadd("second"    , -1, '2019-10-25');

-- 'nanosecond' throws an error:
-- Unsupported feature 'assignment from non-constant source expression'.
set bar = dateadd("nanosecond", -1, '2019-10-25');

Ответы [ 2 ]

0 голосов
/ 26 октября 2019

Это действительно текущее ограничение Снежинки.

Сегодня в set выражениях правая сторона должна быть простым выражением, для которого есть «быстрый» путь вычисления (не вдаваясь в подробности). Для «второго» такой путь существует, для «наносекунды» - нет.

Вы можете обойти это, сделав правильное выражение выражением «подзапроса», например:

set x = (select dateadd(nanosecond, -1, '2019-10-25'));
0 голосов
/ 25 октября 2019

Похоже на ошибку,

select dateadd("nanosecond", -1, '2019-10-25') from dual

, кажется, работает просто отлично, и в то же время тип данных одинаков и для секунды, и для наносекунды - дата, которую мы конвертировали в TIMESTAMP_NTZ (9), поэтому нетРазницы там тоже нет.

...