Snowflake SQL: получайте записи за последний день месяца

Там, где обычно используется EOMonth, в Snowflake такой функции нет. У них есть LAST_DAY, но пока мне не удалось заставить его работать. Кто-нибудь видит, что я сделал неправильно, ниже ИЛИ есть способ обхода EOMonth в Snowflake?

Мои попытки:

SELECT *
FROM "NORCO"."UNITS_SNAPSHOT" AS US1
WHERE US1.CCODE LIKE '%514-L%' AND 
US1.TIMESTAMP=(SELECT LAST_DAY(US1.TIMESTAMP,'MONTH') 
               FROM "NORCO"."UNITS_SNAPSHOT" AS US2 WHERE US1.CCODE=US2.CCODE)

а также

SELECT *
FROM "NORCO"."UNITS_SNAPSHOT" AS US1
WHERE US1.CCODE LIKE '%514-L%' AND 
US1.TIMESTAMP=LAST_DAY(US1.TIMESTAMP,'MONTH')

То, что я ожидаю от таблицы ежедневных записей, - это последний день месяца записей. Предложения, помощь или идеи приветствуются !!

Спасибо всем


person Community    schedule 29.09.2019    source источник
comment
Что вы получаете с этими выражениями? ошибки или неверные данные? timestamp содержит ли компонент времени? Какой это тип данных? Получите ли вы то, что ожидаете, просто запустив SELECT US1.TIMESTAMP, LAST_DAY(US1.TIMESTAMP,'MONTH') FROM "NORCO"."UNITS_SNAPSHOT" AS US1   -  person Nick.McDermaid    schedule 30.09.2019
comment
Юрп, это был @ Nick.McDermaid, мне пришлось использовать их поле TO_DATE на обоих концах, чтобы оно работало правильно. Спасибо за мысль!   -  person    schedule 30.09.2019


Ответы (1)


Я был бы уверен, что типы данных идентичны, т.е. DATE, поэтому небольшое изменение:

SELECT *
FROM "NORCO"."UNITS_SNAPSHOT" AS US1
WHERE US1.CCODE LIKE '%514-L%' AND 
US1.TIMESTAMP::DATE=(SELECT LAST_DAY(US1.TIMESTAMP, MONTH) 
                     FROM "NORCO"."UNITS_SNAPSHOT" AS US2 WHERE US1.CCODE=US2.CCODE)

Мне трудно понять, чего пытается достичь этот запрос и почему он должен быть коррелирован. Искать набор из CCODE, у которых есть TIMESTAMP EOM? Если это так, некоторые упрощения:

SELECT *
FROM "NORCO"."UNITS_SNAPSHOT" AS us
WHERE us.CCODE LIKE '%514-L%' AND 
us."TIMESTAMP"::DATE=LAST_DAY(us."TIMESTAMP", MONTH) 
person Hans Henrik Eriksen    schedule 04.10.2019