Время округления в Python в SQL - PullRequest
0 голосов
/ 02 июня 2019

как обойти последний час между последним часом и ровно за 1 час до этого, например, если сейчас час 14:10, то я вижу, что ель дает мне всю запись между 13-14: 00, мой кодтолько за последний час:

select *
from my_table p
where p.when_seen between unix_timestamp(now())- 3600 and unix_timestamp(now())

wheen_seen - это отметка времени linux, например

select when_seen ,from_unixtime(when_seen ) from my_table LIMIT 1;

1539085264 2018-10-09 11: 41: 04

1 Ответ

1 голос
/ 02 июня 2019

Разделите метку времени Unix на количество секунд в часе (3600), разделите это деление на пол и умножьте на количество секунд в часе. Тогда у вас есть отметка времени часа без минут или секунд.

SELECT *
       FROM my_table p
       WHERE p.when_seen >= floor(unix_timestamp(now()) / 3600) * 3600 - 3600
             AND p.when_seen < floor(unix_timestamp(now()) / 3600) * 3600;

Вам также следует рассмотреть возможность использования правильного открытого интервала, поскольку правая граница не является частью предыдущего часа.

...