Je travaille actuellement sur un projet qui se comporte différemment selon qu'il s'agit d'un jour férié ou non (entre autres contraintes, évidemment). À cette fin, j'essaie de créer une table qui contient la date et le jour de la semaine (en considérant les vacances comme étant un huitième jour de la semaine).Oracle: Programme ne pas forcer correctement dans l'instruction SELECT CASE à une date
J'ai une table dont je suis la source de la liste des vacances, nommé holiday
, qui a un seul champ, holidaydate
(DATE
type de données). La table dans laquelle j'essaie de mettre les valeurs est nommée daydates
, avec deux champs, day
(type de données DATE
) et dayofweek
(type de données CHAR(10)
).
C'est la logique telle que je l'ai pour le moment, pendant que je teste.
INSERT INTO holiday
(holidaydate)
SELECT sysdate FROM dual;
SELECT sysdate,
(
CASE
WHEN sysdate IN
(SELECT h.holidaydate FROM holiday h)
THEN 'holiday'
ELSE TO_CHAR(sysdate , 'day')
END)
FROM dual;
Malheureusement, il renvoie actuellement, disons, «mercredi», plutôt que «vacances». J'ai le sentiment que j'ai besoin de changer le WHEN sysdate IN
en un WHEN to_char (sysdate, 'dd-mon-yyyy') IN
ou quelque chose comme ça, mais j'ai essayé quelques variantes et ils ne semblent pas avoir fonctionné jusqu'à maintenant.
Des suggestions?
+1, mais je vous conseille d'utiliser Trunc (sysdate) au lieu de la conversion to_char.C'est un meilleur reflet de l'objectif du code, je pense. –
Excellent conseil. Seriez-vous d'accord avec moi si je modifie ma réponse pour refléter votre suggestion? Merci! –
il suffit de l'éditer, c'est une partie de l'idée de ce site. –