web-dev-qa-db-fra.com

Comment soustraire des heures d'une date dans Oracle pour que cela affecte également le jour

J'essaie de soustraire la date d'Oracle pour que cela affecte également la journée. Par exemple, si l'horodatage est 01/juin/2015 00 heures et si je soustrais 2 heures, je veux pouvoir aller au 31/mai/2014 22 heures.

J'ai essayé

to_char(sysdate-(2/11), 'MM-DD-YYYY HH24')

mais cela ne fait que soustraire l'heure; il ne touche pas le jour lui-même.

17
hi4ppl

D'autres ont commenté l'utilisation (incorrecte) de 2/11 pour spécifier l'intervalle souhaité.

Personnellement, je préfère cependant écrire des choses comme ça en utilisant les littéraux ANSI interval ce qui rend lecture la requête beaucoup plus facile:

sysdate - interval '2' hour

Il a également l'avantage d'être portable, de nombreux SGBD le supportent. De plus, je n'ai pas à allumer une calculatrice pour savoir combien d'heures l'expression signifie - je suis assez mauvais avec l'arithmétique mentale;)

42

Essaye ça:

SELECT to_char(sysdate - (2 / 24), 'MM-DD-YYYY HH24') FROM DUAL

Pour le tester à l'aide d'une nouvelle instance de date:

SELECT to_char(TO_DATE('11/06/2015 00:00','dd/mm/yyyy HH24:MI') - (2 / 24), 'MM-DD-YYYY HH24:MI') FROM DUAL

La sortie est: 06-10-2015 22:00, qui est la veille.

3
m3nation

sysdate2/11)

Pour soustraire --- (heures d'une [[# #]] date [~ # ~], vous devez convertir les heures en jours. Un jour se compose de 24 hours, donc pour convertir 2 hours en jours, vous devez le diviser par 24.

Maintenant, pour soustraire 2 heures de la date, procédez comme suit:

DATE_value - 2/24

Par exemple,

SQL> SELECT TO_CHAR(
  2                 TO_DATE('01/Jun/2015 00:00:00', 'DD/Mon/YYYY HH24:MI:SS') - 2/24,
  3         'DD/Mon/YYYY HH24:MI:SS') dt
  4  FROM DUAL;

DT
--------------------
31/May/2015 22:00:00

SQL>
3
Lalit Kumar B

date - n Soustraira n jours de la date indiquée. Afin de soustraire les heures, vous devez le convertir en day buy en le divisant par 24. Dans votre cas, il devrait être to_char(sysdate - (2 + 2/24), 'MM-DD-YYYY HH24'). Cela soustraire 2 jours et 2 heures de sysdate.

1
Tapan Pandya