Vérifier si la date actuelle est entre les deux dates Oracle SQL
Je voudrais sélectionner 1
si la date du jour se situe entre 2 dates par Oracle SQL.
J'ai écrit un SQL après la lecture par d'autres questions.
https://stackoverflow.com/questions/2369222/oracle-date-between-query
Mais elle est revenue seule la valeur null. sysdate
est la date du jour qui est 01/05/2014
dans le format de date DD/MM/YYYY
.
Le SQL que j'ai écrit est:
select 1 from dual
WHERE to_date(sysdate,'DD/MM/YYYY')
BETWEEN TO_DATE('28/02/2014', 'DD/MM/YYYY')
AND TO_DATE('20/06/2014', 'DD/MM/YYYY');
et
select 1 from dual
WHERE to_date(sysdate,'DD/MM/YYYY') >= TO_DATE('28/02/2014', 'DD/MM/YYYY')
AND to_date(sysdate,'DD/MM/YYYY') < TO_DATE('20/06/2014', 'DD/MM/YYYY');
- avez-vous besoin de
TO_DATE()
sysdate? Sûrement est-il déjà une date - merci paul, Selon le Gordon Linoffs de la solution ci-dessous
sysdate
est déjà une date. - Vous n'avez pas besoin de SQL pour cela -, PL/SQL, tu peux faire quelque chose comme
if sysdate between date '2014-02-28' and date '2014-06-21' then v := 1; end if;
- merci Jeffrey Kemp cela fonctionne aussi très bien pour moi.
Vous devez vous connecter pour publier un commentaire.
Vous n'avez pas besoin d'appliquer
to_date()
àsysdate
. Il est déjà là:Si vous êtes préoccupé par le composant sur la date, puis utilisez
trunc()
:trunc(sysdate)
dans cet exemple (double tableau) est ok pour gérer le temps portion d'un jour, mais dans la vraie table avec indexé champ de DATE, il peut empêcher l'Oracle de l'aide de l'index correspondant. Je suggère de ne pas utiliser "entre" de la clause, mais utiliser des opérateurs de comparaison ici:where DATE_FIELD >= TO_DATE('28/02/2014', 'DD/MM/YYYY') and DATE_FIELD < TO_DATE('20/06/2014', 'DD/MM/YYYY') + 1
TSQL: les Dates - besoin de chercher des lacunes dans les dates entre Deux dates