Interroga Oracle DB per i timestamp quando conosci millisecondi
Domanda
Attualmente sto ricevendo l'errore:
java.sql.SQLException: ORA-01843: not a valid month
che presumo abbia a che fare con il modo in cui sto impostando un timestamp ...
Quindi ho una domanda come questa:
select * from A_TABLE where A_TIMESTAMP_COL < '1252944840000'
Ma non funziona ... e non voglio convertirlo idealmente in una data. Esiste una sintassi speciale per dire a Oracle che si tratta di un timestamp?
Soluzione
Penso che puoi lanciare la colonna della data su un carattere e fare qualcosa del tipo:
select * from A_TABLE where to_char(A_TIMESTAMP_COL) < '1252944840000'
Questo dovrebbe permetterti di confrontare stringhe, non date.
Altri suggerimenti
È possibile utilizzare la funzione to_timestamp () per convertire la stringa in un valore timestamp: http://download.oracle.com/docs/cd/B28359_01/server.111/b28286/functions201.htm#sthref2458
Usa i metodi di convenienza java.sql
per prendere quel millisecondo e trasformarlo in una data o un timestamp.
Puoi utilizzare questa query:
SELECT * FROM A_TABLE WHERE TIMESTAMP < (SYSDATE - 10/1440)
Dove (SYSDATE - 10/1440)
significa SYSDATE - 10 minuti
.
Vedi anche alcuni esempi qui .