Oracle SQL de la requête pour le format de la Date
J'ai toujours confondu avec le format de date ORACLE SQL de la requête et de passer des minutes ensemble pour google, quelqu'un Peut-il m'expliquer de la façon la plus simple de s'attaquer lorsque nous avons différents format de la date dans la table de base de données ?
par exemple, j'ai une colonne de date comme ES_DATE, contient des données que de 27 AVR-12 11.52.48.294030000 SUIS de type de Données TIMESTAMP(6) AVEC l'HEURE LOCALE.
J'ai écrit simple requête select pour récupérer les données pour ce jour particulier, et il me renvoie rien. Quelqu'un peut-il m'expliquer ?
select * from table
where es_date=TO_DATE('27-APR-12','dd-MON-yy')
ou
select * from table where es_date = '27-APR-12';
Vous devez vous connecter pour publier un commentaire.
to_date()
retourne un jour à 00:00:00, si vous avez besoin de "supprimer" les minutes à partir de la date que vous comparez à:Vous voulez sans doute de créer un index sur
trunc(es_date)
si c'est quelque chose que vous faites sur une base régulière.Le littéral
'27-APR-12'
peut échouer très facilement si le format de date par défaut est changé pour quelque chose de différent. Donc, assurez-vous de toujours utiliser desto_date()
avec un bon masque de format (ou ANSI littérale:date '2012-04-27'
)Bien que vous n'avez droit à l'aide
to_date()
et en ne s'appuyant pas sur implict conversion de type de données, votre utilisation de to_date() a encore un subtil piège en raison du format'dd-MON-yy'
.Avec un autre paramètre de langue de cette situation peut facilement échouer par exemple
TO_DATE('27-MAY-12','dd-MON-yy')
quand NLS_LANG est en allemand. Éviter quoi que ce soit dans le format qui peut être différent dans une autre langue. À l'aide de quatre chiffres pour l'année et uniquement des nombres par exemple'dd-mm-yyyy'
ou'yyyy-mm-dd'
Where B.Timelog = to_date('14-Apr-17','DD-MM-YY')
si vous utilisez le même format de date et select de la requête et la date dans oracle :
To_DATE fourni par oracle