web-dev-qa-db-fra.com

Oracle comparant l'horodatage avec la date

J'ai un champ d'horodatage et je veux juste comparer la date dans ma requête dans Oracle

Comment je fais ça,

SELECT *
FROM Table1
WHERE date(field1) = '2012-01-01' 
25
user1050619

Vous pouvez tronquer la partie date:

select * from table1 where trunc(field1) = to_date('2012-01-01', 'YYYY-MM-DD')

Le problème avec cette approche est qu'aucun index sur field1 ne serait utilisé en raison de l'appel de fonction.

Alternativement (et plus indexé)

select * from table1 
 where field1 >= to_timestamp('2012-01-01', 'YYYY-MM-DD') 
   and field1 < to_timestamp('2012-01-02', 'YYYY-MM-DD')
49
beny23

Vous pouvez tronquer la date

SELECT *
FROM Table1
WHERE trunc(field1) = to_Date('2012-01-01','YYY-MM-DD')

Regardez le SQL Fiddle pour plus d'exemples.

3
hol

Le format to_date a fonctionné pour moi. Veuillez considérer les formats de date: MON-, MM, ., -.

t.start_date >= to_date('14.11.2016 04:01:39', 'DD.MM.YYYY HH24:MI:SS')
t.start_date <=to_date('14.11.2016 04:10:07', 'DD.MM.YYYY HH24:MI:SS')
0
Tolga ÇELİK