Interrogez la base de données Oracle pour connaître les horodatages lorsque vous connaissez les millisecondes.
Question
Je reçois actuellement l'erreur:
java.sql.SQLException: ORA-01843: not a valid month
ce que je suppose est lié à la façon dont je mets un horodatage ...
J'ai donc une requête comme celle-ci:
select * from A_TABLE where A_TIMESTAMP_COL < '1252944840000'
Mais ça ne marche pas ... et je ne veux pas être obligé de le convertir en une date idéale. Existe-t-il une syntaxe spéciale pour indiquer à Oracle qu’il s’agit d’un horodatage?
La solution
Je pense que vous pouvez convertir la colonne de date en un caractère et faire quelque chose comme:
select * from A_TABLE where to_char(A_TIMESTAMP_COL) < '1252944840000'
Cela devrait vous permettre de comparer des chaînes et non des dates.
Autres conseils
Vous pouvez utiliser la fonction to_timestamp () pour convertir votre chaîne en une valeur d'horodatage: http://download.oracle.com/docs/cd/B28359_01/server.111/b28286/functions201.htm#sthref2458
Utilisez les méthodes pratiques java.sql
pour prendre cette milliseconde et la transformer en date ou en horodatage.
Vous pouvez utiliser cette requête:
SELECT * FROM A_TABLE WHERE TIMESTAMP < (SYSDATE - 10/1440)
Où (SYSDATE - 10/1440)
signifie SYSDATE - 10 minutes
.
Voir aussi des exemples de ici .