web-dev-qa-db-fra.com

Déterminez si la date d'oracle est-elle un week-end?

Est-ce le meilleur moyen de déterminer si une date d'oracle est un week-end?

select * from mytable
where 
TO_CHAR (my_date, 'DY', 'NLS_DATE_LANGUAGE=ENGLISH') IN ('SAT', 'Sun');
17
Marcus Leon

A partir de Oracle 11g, oui. La seule alternative agnostique de la région viable que j'ai vue est la suivante:

SELECT *
FROM mytable
WHERE MOD(TO_CHAR(my_date, 'J'), 7) + 1 IN (6, 7);
28
ninesided
MOD(TO_CHAR(my_date, 'J'), 7) + 1 IN (6, 7)

n'est pas correcte! Le nombre de jours de week-end peut être de 6 et 7, ou 7 et 1, en fonction des paramètres NLS.

Donc, le test approprié (indépendamment des paramètres NLS) est celui-ci mentionné précédemment:

TO_CHAR (my_date, 'DY', 'NLS_DATE_LANGUAGE=ENGLISH') IN ('SAT', 'Sun')
3