web-dev-qa-db-fra.com

Conversion de l'horodatage en date dans Oracle SQL

Comment pouvons-nous convertir l'horodatage en date?

La table a un champ, start_ts qui est au format timestamp:

'05/13/2016 4:58:11.123456 PM'

J'ai besoin d'interroger la table et de trouver les valeurs maximales et minimales timestamp dans la table, mais je ne suis pas en mesure de le faire.

Select max(start_ts) 
from db 
where cast(start_ts as date) = '13-may-2016'

Mais la requête ne renvoie aucune valeur. 

Aidez-moi, s'il vous plaît, à trouver l'horodatage maximal pour une date.

13
Dinu
CAST(timestamp_expression AS DATE)

Par exemple, la requête est la suivante: SELECT CAST(SYSTIMESTAMP AS DATE) FROM dual;

17
Peter Nosko

Essayez plutôt d'utiliser TRUNC et TO_DATE

WHERE
    TRUNC(start_ts) = TO_DATE('2016-05-13', 'YYYY-MM-DD')

Sinon, vous pouvez utiliser >= et < à la place pour éviter d'utiliser la fonction dans la colonne start_ts:

WHERE
   start_ts >= TO_DATE('2016-05-13', 'YYYY-MM-DD')
   AND start_ts < TO_DATE('2016-05-14', 'YYYY-MM-DD')
7
Felix Pamittan

utiliser cette mise en forme tout en sélectionnant 

to_char(systimestamp,'DD-MON-YYYY')

Par exemple: 

sélectionnez to_char (systimestamp, 'DD-MON-YYYY') dans dual;

5
theDbGuy

Si le type de données est timestamp, le format visible est sans importance.

Vous devriez éviter de convertir les données en date ou d'utiliser to_char. Comparez plutôt les données d'horodatage aux valeurs d'horodatage à l'aide de TO_TIMESTAMP ()

WHERE start_ts >= TO_TIMESTAMP('2016-05-13', 'YYYY-MM-DD')
   AND start_ts < TO_TIMESTAMP('2016-05-14', 'YYYY-MM-DD')
3
Used_By_Already

Vous pouvez utiliser: select to_date (to_char (date_field, 'jj/mm/aaaa')) de la table.

0
Youness Marhrani