Oracle
 sql >> Base de données >  >> RDS >> Oracle

comparer la date dans la commande sql

Date/Horodatage n'a pas de format . Oracle ne stocke pas la date/l'horodatage dans le format que vous voyez. Le format que vous voyez est uniquement pour l'affichage objectif. La date est stockée en interne sur 7 octets, format propriétaire d'Oracle .

Bien sûr que vous pourriez. Vous pouvez utiliser TRUNC qui tronque la partie heure et ne laisse que la partie date et le type de données reste comme date.

Par exemple,

SQL> SELECT TRUNC(SYSTIMESTAMP) my_tmstmp FROM DUAL;

MY_TMSTMP
----------
2015-05-29

Ainsi, vous obtenez l'entrée de l'utilisateur dans ce format sous forme de chaîne . Vous devez d'abord convertir dans DATE en utilisant TO_DATE puis comparez-le.

Par exemple,

WHERE TRUNC(dt_column) < TO_DATE('05/29/2015 12:07:58', 'MM/DD/YYYY HH24:MI:SS')

Comme je l'ai déjà dit, si vous souhaitez ignorer la partie heure, appliquez TRUNC .

Cependant, l'application de TRUNC à la date colonne supprimerait tout index régulier sur cette colonne. Du point de vue des performances, mieux vaut utiliser une condition de plage de dates .

Par exemple,

WHERE dt_column
BETWEEN 
        TO_DATE('05/29/2015 12:07:58', 'MM/DD/YYYY HH24:MI:SS')
AND     
        TO_DATE('05/29/2015 12:07:58', 'MM/DD/YYYY HH24:MI:SS') +1