Запросите Oracle DB для отметок времени, когда вы знаете миллисекунды
Вопрос
В настоящее время я получаю сообщение об ошибке:
java.sql.SQLException: ORA-01843: not a valid month
Я предполагаю, что это связано с тем, как я устанавливаю метку времени ...
Итак, у меня есть такой запрос:
select * from A_TABLE where A_TIMESTAMP_COL < '1252944840000'
Но это не работает ... и я не хочу в идеале конвертировать его в дату. Есть ли специальный синтаксис, чтобы сообщить Oracle, что это временная метка?
Решение
Я думаю, что вы можете привести столбец даты к символу и сделать что-то вроде:
select * from A_TABLE where to_char(A_TIMESTAMP_COL) < '1252944840000'
Это должно позволить вам сравнивать строки, а не даты.
Другие советы
Вы можете использовать функцию to_timestamp () для преобразования вашей строки в значение метки времени: http://download.oracle.com/docs/cd/B28359_01/server.111/b28286/functions201.htm#sthref2458
Используйте удобные методы java.sql
, чтобы взять это время в миллисекундах и превратить его в метку даты или времени.
Вы можете использовать этот запрос:
SELECT * FROM A_TABLE WHERE TIMESTAMP < (SYSDATE - 10/1440)
Где (SYSDATE - 10/1440)
означает SYSDATE - 10 минут
.
Также посмотрите некоторые примеры здесь .