URL: https://linuxfr.org/forums/programmationautre/posts/sql-toujours-requ%C3%AAte-sur-une-non-table Title: SQL toujours : requête sur une non-table.... Authors: Gyro Gearllose Date: 2004年08月24日T08:26:08+02:00 Tags: postgresql Score: 0 Salut tout le monde ! Voici mon problème du jour : comment puis-je procéder pour obtenir le nombre de jours ouvrés situés entre deux dates (incluse) ? Bien sûr, j'aurais aimé éviter de me créer une table juste pour ça.... J'ai donc le select, le where, mais il me manque le from. En gros, ça ressemblerait à ça : select count(*) from ???? where day between dateDeb and dateFin and to_char(day, 'D')::int4 !=7 and to_char (day, 'D')::int4 != 1; Sachant que la fonction to_char (date, 'D') retourne 1 pour dimanche, 7 pour samedi. J'ai essayé plusieurs choses, et rien ne fonctionne. Pourtant, il me semblait bien que le SQL était fait pour traiter des ensembles.... Alors, avis aux gourous : j'ai bien pensé à faire une fonction en plPgSql (hé oui, je bosse sous postgreSQL), mais si c'est pour faire un truc comme ce qui suit, je trouve ça un peu dommage par rapport à la puissance du sql.... create function nbJoursOuvrables (date, date) returns int4 as ' declare dat_deb alias for 1ドル; dat_fin alias for 2ドル; x date; nbJoursOuvres int4; begin nbJoursOuvres := 0; x := dat_deb; while (x <= dat_fin) loop if ((to_char(x, ''D'') != 7) AND (to_char (x, ''D'') != 1)) then nbJoursOuvres := nbJoursOuvres + 1; end if; x := x + 1; end loop; return nbJoursOuvres; end; ' language 'plPgsql'; ... et je me demande si vraiment ce sera plus rapide qu'une requête sur un ensemble ? Alors, à votre bon coeur, car j'ai vraiment besoin, et de manière assez intensive, donc, toute solution meilleure sera la bienvenue.