Oracle 11g и SQL Server EPOCH-3600 и EPOCH (Unix_timestamp) - PullRequest
0 голосов
/ 11 декабря 2018

Мне нужно написать запрос на выборку, который получает данные между EPOCH(datetime)-3600 AND EPOCH(datetime).

, чтобы выбрать все инциденты, измененные в определенном диапазоне дат, между EPOCH(datetime)-3600 AND EPOCH(datetime)

Итак, мой запрос:

SELECT *
FROM TABLENAME
WHERE COLUMN_NAME BETWEEN COLUMNNAME-3600 AND COLUMNNAME

Получит ли этот запрос данные за 1 час до текущего времени в формате Unix TimeStamp?

1 Ответ

0 голосов
/ 11 декабря 2018

Учитывая столбец (COLUMN_NAME), в котором данные хранятся в виде метки времени Unix (например, количество секунд, прошедших с 1 января 1970 года), вы ищете для фильтрации записей на основе DATE, переданного в качестве параметра.

Насколько я понимаю, вам нужен способ конвертировать метку времени Unix в дату.В Oracle нет такой встроенной функции, однако вы можете добавить число к дате, где число представляет количество дней, которое нужно добавить.

Попробуйте:

SELECT *
FROM TABLENAME
WHERE 
    TO_DATE('01/01/1970', 'dd/mm/yyyy') + COLUMN_NAME/60/60/24 -- convert unix timestamp to date
    BETWEEN :mydate - 3600 AND :mydate
;

Замените оба :mydate фактическим DATE, для которого вы хотите выполнить поиск.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...