Je dois rechercher des lignes dans une période donnée.
select *
from TableA
where startdate >= '12-01-2012 21:24:00'
and startdate <= '12-01-2012 21:25:33'
C'est-à-dire que je dois rechercher des lignes avec une précision d'horodatage de SECONDS. Comment puis-je y arriver?
FYI: La colonne startdate
est de type TIMESTAMP
.
Vous devez utiliser to_timestamp()
pour convertir votre chaîne en une valeur timestamp
appropriée:
to_timestamp('12-01-2012 21:24:00', 'dd-mm-yyyy hh24:mi:ss')
Si votre colonne est de type DATE
(qui prend également en charge les secondes), vous devez utiliser to_date()
to_date('12-01-2012 21:24:00', 'dd-mm-yyyy hh24:mi:ss')
Pour insérer ceci dans une condition where
, utilisez ce qui suit:
select *
from TableA
where startdate >= to_timestamp('12-01-2012 21:24:00', 'dd-mm-yyyy hh24:mi:ss')
and startdate <= to_timestamp('12-01-2012 21:25:33', 'dd-mm-yyyy hh24:mi:ss')
Vous n'avez jamais besoin d'utiliser to_timestamp()
sur une colonne de type timestamp
.
Pour tout le monde qui vient à ce fil avec quelques secondes dans votre horodatage, utilisez:
to_timestamp('2018-11-03 12:35:20.419000', 'YYYY-MM-DD HH24:MI:SS.FF')