Comme APC l'a fait remarquer à juste titre, votre colonne start_date semble être un TIMESTAMP, mais il peut aussi s'agir d'un type de données TIMESTAMP WITH LOCAL TIMEZONE ou TIMESTAMP WITH TIMEZONE. Ceux-ci pourraient bien influencer toutes les requêtes que vous faisiez sur les données si votre serveur de base de données était dans un fuseau horaire différent de vous. Cependant, gardons cela simple et supposons que vous êtes dans le même fuseau horaire que votre serveur. Tout d'abord, pour vous donner la confiance, vérifiez que start_date est un type de données TIMESTAMP.
Utilisez la commande SQLPlus DESCRIBE (ou l'équivalent dans votre IDE) pour vérifier que cette colonne est un type de données TIMESTAMP.
par exemple
DESCRIBE matable
devrait signaler:
Name Null? Type
----------- ----- ------------
NAME VARHAR2(20)
START_DATE TIMESTAMP
S'il est rapporté comme type = TIMESTAMP alors vous pouvez interroger vos plages de dates avec la conversion de la date de TO_TIMESTAMP simple, qui exige aucun argument (ou image).
Nous utilisons TO_TIMESTAMP pour nous assurer que tout index de la colonne START_DATE est pris en compte par l'optimiseur. La réponse d'APC a également noté qu'un index basé sur la fonction aurait pu être créé sur cette colonne et que cela influencerait le prédicat SQL mais nous ne pouvons pas commenter cela dans cette requête. Si vous voulez savoir comment savoir quels index ont été appliqués à la table, postez une autre question et nous pourrons y répondre séparément.
Donc, en supposant qu'il existe un index sur start_date, qui est un type de données TIMESTAMP et que vous voulez l'optimiseur de le considérer, votre SQL serait:
select * from mytable where start_date between to_timestamp('15-JAN-10') AND to_timestamp('17-JAN-10')+.9999999
+.999999999 est très proche mais ISN » Tout à fait 1 donc la conversion du 17-JAN-10 sera aussi proche de minuit ce jour-là que possible, donc la requête renvoie les deux lignes.
La base de données verra BETWEEN à partir 15-janv.-10: 00: 00: 00: 0000000 à 17-janv.-10 23: 59: 59: 99999 et comprendra donc toutes les dates du 15, 16 et 17 janvier 2010 quelle que soit la composante temporelle de l'horodatage.
Espérons que ça aide.
Dazzer
Je ne peux pas passer l'heure seule date. –
wow ça marche bien APC ... merci beaucoup pour votre support –
@APC a fonctionné comme charme dans ORACLE 11 G – Alex