75 votes

Comment obtenir le nom du jour de la semaine à partir d'une date ?

Étant donné que 03/09/1982 comment pouvons-nous dire que c'est quel jour de la semaine. Dans ce cas, ce sera Tue .

Est-il possible d'obtenir en une seule requête ?

144voto

Zohaib Points 4221
SQL> SELECT TO_CHAR(date '1982-03-09', 'DAY') day FROM dual;

DAY
---------
TUESDAY

SQL> SELECT TO_CHAR(date '1982-03-09', 'DY') day FROM dual;

DAY
---
TUE

SQL> SELECT TO_CHAR(date '1982-03-09', 'Dy') day FROM dual;

DAY
---
Tue

(Notez que les requêtes utilisent des littéraux de date ANSI, qui suivent la norme de date ISO-8601 et évitent toute ambiguïté quant au format de la date).

5 votes

Sachez que le format "dd/mm/yyyy" dans les exemples de code ci-dessus n'est pas habituel, si vous recherchez un formatage de date américain. Aux États-Unis, le format de date typique est 'mm/dd/yyyy'. Il n'est pas clair si l'exemple de date original était en mars ou en septembre.

2 votes

Non-typique ? @DWright vous devez être américain et ne jamais avoir travaillé sur un projet international ou entendu parler des normes internationales (ISO).

16 votes

@pablete, j'ai en fait grandi en Europe et je suis conscient des variations internationales dans le formatage des dates et je suis également conscient des normes ISO. La raison pour laquelle j'ai fait ce commentaire est que le PO utilisait clairement un format de date américain, puisque le 9 mars 1982 était un mardi, mais que le 3 septembre 1982 était un vendredi. Le PO dit que c'était un mardi, donc nous savons que le format de date américain est utilisé. Mais Zohaib utilise une chaîne de format 'dd/mm/yyyy', ce qui pose un problème potentiel si le PO utilise la chaîne de format de Zohaib, car il ne s'agit pas d'un formatage américain. Je voulais donc alerter les gens, et en particulier l'OP, sur ce point.

4voto

wolφi Points 2281

Avec presque dix ans de retard, je pense qu'il est nécessaire d'améliorer la réponse de @Zohaib car le résultat dépend de la langue du client. Si vous affichez le nom du jour de la semaine à un utilisateur, c'est tout à fait correct, mais si votre code en dépend, je préférerais contrôler la langue de cette façon :

SQL> SELECT TO_CHAR(date '1982-03-09', 'DAY', 'NLS_DATE_LANGUAGE = ENGLISH') day FROM dual;

DAY
---------
TUESDAY

SQL> SELECT TO_CHAR(date '1982-03-09', 'DY', 'NLS_DATE_LANGUAGE = ENGLISH') day FROM dual;

DAY
---
TUE

SQL> SELECT TO_CHAR(date '1982-03-09', 'Dy', 'NLS_DATE_LANGUAGE = ENGLISH') day FROM dual;

DAY
---
Tue

-2voto

Pour faire cela pour oracle sql, la syntaxe serait :

, SUBSTR(col,INSTR(col,'-',1,2)+1) AS new_field

pour cet exemple, je cherche le deuxième '-' et je prends la sous-chaîne jusqu'à la fin.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X