web-dev-qa-db-fra.com

Requête Oracle SQL pour le format de date

Je suis toujours confondu avec le format de date dans la requête Oracle SQL et passe quelques minutes ensemble à Google. Quelqu'un peut-il m'expliquer le moyen le plus simple de traiter lorsque nous avons un format de date différent dans la table de base de données?

par exemple, j'ai une colonne de date sous la forme ES_DATE, qui contient les données 27-APR-12 11.52.48.294030000 AM de type de données TIMESTAMP (6) WITH LOCAL TIME ZONE.

enter image description here

J'ai écrit une requête de sélection simple pour récupérer des données pour ce jour particulier et cela ne me renvoie rien. Quelqu'un peut 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';
20
user2246725

to_date() renvoie une date à 00:00:00, vous devez donc "supprimer" les minutes de la date à laquelle vous comparez:

select * 
from table
where trunc(es_date) = TO_DATE('27-APR-12','dd-MON-yy')

Vous voudrez probablement créer un index sur trunc(es_date) si vous le faites régulièrement.

Le littéral '27-APR-12' Peut échouer très facilement si le format de date par défaut est modifié. Donc, assurez-vous de toujours utiliser to_date() avec un masque de formatage approprié (ou un littéral ANSI: date '2012-04-27')

Bien que vous ayez eu raison d'utiliser to_date() et de ne pas compter sur une conversion implicite du type de données, votre utilisation de to_date () présente toujours un piège subtil en raison du format 'dd-MON-yy'.

Avec un paramètre de langue différent, cela pourrait facilement échouer, par exemple. TO_DATE('27-MAY-12','dd-MON-yy') lorsque NLS_LANG est défini sur allemand. Évitez tout élément du format qui pourrait être différent dans une langue différente. En utilisant une année à quatre chiffres et uniquement des chiffres, par ex. 'dd-mm-yyyy' Ou 'yyyy-mm-dd'

42

si vous utilisez le même format de date et que vous avez sélectionné requête où date dans Oracle:

   select count(id) from Table_name where TO_DATE(Column_date)='07-OCT-2015';

To_DATE fourni par Oracle

2
abhishek ringsia