Bonjour,
depuis des années j'utilise cette requête dans un DTS pour me charger des données dans un fichier chaque début du mois.Il charge ainsi les données du mois précédent:

Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
SELECT numero_cli, nom, prenom,date_encais,numero_cli_fact, date_rembours, num_fact,type_fact from Client inner join facture on Client.numero_cli=facture.numero_cli_fact
where year(date_encais)=getdate() and
month(date_encais)=month(getdate())-1
le soucis c'est qu'au mois de janvier,il devrait me charger les données du mois de décembre de l'année précédente, mais il ne les trouve pas et c'est normal, car getdate() renvoit la date en cours.

j'ai ainsi opté pour cette procédure T-SQL:

Code sql : 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
20
21
22
23
24
25
26
use madatabase;
begin
  declare @year_sec date
  declare @month_sec month
set @year_sec=year(gatdate())
set @month_sec=month(gatedate())
if @month_sec=1 
     set @month_sec=12
     set @year_sec= @year_sec -1
     begin
         SELECT numero_cli, nom, prenom,date_encais,numero_cli_fact,
         date_rembours, num_fact,type_fact from Client inner join facture on  
         Client.numero_cli=facture.numero_cli_fact
         where year(date_encais)=@year_sec and
         month(date_encais)=@month_sec
     end
else
     begin
         SELECT numero_cli, nom, prenom,date_encais,numero_cli_fact,
         date_rembours, num_fact,type_fact from Client inner join facture on  
         Client.numero_cli=facture.numero_cli_fact
         where year(date_encais)=@year_sec and
         month(date_encais)=@month_sec
     end
 
end

Pensez vous que cela est optimisé? des idées?