Последние 7 дней фильтр Unix / Redshift не работает - PullRequest
0 голосов
/ 11 мая 2018

Этот запрос происходит в Redshift, чьи особенности SQL сводят меня с ума.

В моей таблице есть отметка времени эпохи UNIX, и мне нужно фильтровать данные за последние семь дней. Redshift не хватает функции from_unixtime(), поэтому я взломал это вместе. tb_h - столбец даты UNIX. 604800000 - это количество миллисекунд в семидневном периоде.

"tb_h" >= DATE_PART(epoch, DATEADD(milliseconds, -604800000, DATEADD(day, -1, trunc(getdate()))))

Этот обходной путь не фильтрует последние семь, он пропускает все даты. В чем здесь моя логическая ошибка?

1 Ответ

0 голосов
/ 11 мая 2018

Что произойдет, если вы используете более разумный тип для вычитания?

"tb_h" >= DATE_PART(epoch, DATEADD(day, -7, DATEADD(day, -1, CURRENT_DATE)))

Во-вторых, в Postgres, epoch возвращает количество секунд - и я не уверен, что Redshift являетсятак же.Если ваше значение в миллисекундах или микросекундах, вам нужно умножить:

"tb_h" >= 1000 * DATE_PART(epoch, DATEADD(day, -8, CURRENT_DATE))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...