salut
étant donner que les heures d'une journée sont comprises entre 1 heure (1)
et 24 heures (00),le pb c'est comment identifieé une heure quelconque est avant minuit et aprés minuit
salut
étant donner que les heures d'une journée sont comprises entre 1 heure (1)
et 24 heures (00),le pb c'est comment identifieé une heure quelconque est avant minuit et aprés minuit
bah entre 12-24h c'est avant et entre 0-12 c'est après non ?
C'est faux : les heures sont comprises entre 00 et 23
ça part de 00h00m00s (minuit) à 23h59m59s
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 To_char( trunc(sysdate), 'HH24:MI:SS') => 00:00:00 To_Char( trunc(sysdate) - 1/24/60/60, 'HH24:MI:SS') => 23:59:59
si on veut pinailler on peut même parler de 23:59:59 999ms![]()
désolé
je vais étre plus précis,je suis entrain de developper un module pointage et j'ai plusieurs shifts qui ont une heure et minute entrée et ont une heure et minute sortie et dans mon raisonnement j'ai besoin de savoir dans le cas d'une sortie l'heure du pointage est avant ou bien aprés minuit pour déterminer à quelle date correspand la sortie
j'éspére que j'été clair, merci d'avance
"Impossible n'est pas français"
Je suppose qu'un shift fait moins de 24h, voire, moins de 12h.
Il suffit de tester l'heure de sortie sur la date d'entrée et de vérifier si elle est < à la date d'entrée. Dans ce cas rajouter 1 jour.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 WITH dt AS (SELECT '08:15' AS he, '23:12' AS hs FROM dual UNION ALL SELECT '20:10' AS he, '03:12' AS hs FROM dual ) SELECT TO_DATE(TO_CHAR(TRUNC(SYSDATE), 'DD/MM/RRRR ') || he, 'DD/MM/RRRR HH24:MI') AS de, CASE WHEN TO_DATE(TO_CHAR(TRUNC(SYSDATE), 'DD/MM/RRRR ') || hs, 'DD/MM/RRRR HH24:MI') < TO_DATE(TO_CHAR(TRUNC(SYSDATE), 'DD/MM/RRRR ') || he, 'DD/MM/RRRR HH24:MI') THEN TO_DATE(TO_CHAR(TRUNC(SYSDATE), 'DD/MM/RRRR ') || hs, 'DD/MM/RRRR HH24:MI') + 1 ELSE TO_DATE(TO_CHAR(TRUNC(SYSDATE), 'DD/MM/RRRR ') || hs, 'DD/MM/RRRR HH24:MI') END AS ds FROM dt DE DS 24/08/2007 08:15:00 24/08/2007 23:12:00 24/08/2007 20:10:00 25/08/2007 03:12:00
et le jour où il y a un incident et que le shift prend plus de 24h tu es TRES mal
supposer c'est bien, anticiper c'est mieux![]()
En partant du principe que tu veux savoir si l'on est plus proche de 0 h ("aprés minuit") ou de 23:59 ("avant minuit")
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 -- maintenant select decode(to_char(sysdate,'AM'),'AM','APRES','AVANT') from dual -- dans 12 heures select decode(to_char(sysdate+12/24,'AM'),'AM','APRES','AVANT') from dual
Partager