'10-MAY-20'
n'est pas une date, c'est une chaîne. Une date n'a pas de format, en fonction de vos paramètres NLS spécifiques aux paramètres régionaux, elle est affichée dans un format lisible par l'homme en utilisant TO_CHAR
et masque de format approprié.
Aussi, vous devriez éviter d'utiliser deux chiffres YY
représentation pour l'année, c'est toute la raison Y2K bogue a commencé. Utilisez toujours YYYY
formater.
Pour convertir une chaîne en date :
Utilisez TO_DATE
et masque de format approprié :
where date_col > TO_DATE('10-MAY-2020', 'DD-MON-YYYY')
and date_col < TO_DATE('13-MAY-2020', 'DD-MON-YYYY')
Ou, utilisez ANSI date literal
qui utilise le format fixe 'YYYY-MM-DD'
:
where date_col > DATE '2020-05-10' and date < DATE '2020-05-13'
Autre chose, DATE
est un mot réservé Oracle, vous pouvez consulter la documentation . Vous utilisez peut-être un identifiant entre guillemets "date"
c'est-à-dire en utilisant des guillemets autour du mot réservé.
C'est probablement parce que vos paramètres NLS de SQL Developer sont définis sur 'DD-MON-YY'
, ainsi, lorsque vous transmettez la date dans ce format, une conversion implicite en date est effectuée. Cependant, si vous modifiez le format, cela ne fonctionnera pas :
alter session set NLS_DATE_FORMAT = 'YYYY-MM-DD';