J'utilise actuellement MyTimeStampField-TRUNC(MyTimeStampField)
pour extraire la partie heure d'une colonne timestamp dans Oracle.
SELECT CURRENT_TIMESTAMP-TRUNC(CURRENT_TIMESTAMP) FROM DUAL
Cela retourne
+00 13: 12: 07.100729
Cela fonctionne bien pour moi, pour extraire la partie heure d'un champ d'horodatage, mais je me demande s'il existe un meilleur moyen (d'utiliser peut-être une fonction intégrée d'Oracle) pour le faire?
Qu'en est-il de EXTRACT () function?
Vous pouvez toujours faire quelque chose comme:
select TO_DATE(TO_CHAR(SYSDATE,'hh24:mi:ss'),'hh24:mi:ss') from dual
Je pense que cela fonctionnera également avec les horodatages.
Vous voulez juste dater puis utiliser
to_char(cast(SYSDATE as date),'DD-MM-YYYY')
et si vous voulez juste le temps alors utilisez
to_char(cast(SYSDATE as date),'hh24:mi:ss')
les paramètres font tout le changé
'DD-MM-YYYY'
et
'hh24:mi:ss'
sélectionnez TO_DATE (TO_CHAR (SYSDATE, 'hh24: mi: ss'), 'hh24: mi: ss') dans dual. Cela donne l'horodatage pour 1 heure de moins que le réel.
Cela peut aider:
Select EXTRACT(HOUR FROM (SYSDATE - trunc(sysdate)) DAY TO SECOND ) From dual;
Je pense que la méthode en question est plus courte et plus rapide que dans les deux réponses. Parce que cela implique seulement deux opérations mathématiques et pas d'analyse complexe, le formatage et la conversion.