On va utiliser la fonction firstdayofweek(D) qui retourne le premier jour de la semaine de la date D.
firstdayofweek(current_date()) retourne le premier jour de la semaine courante
firstdayofweek(current_date()-7) retourne le premier jour de la semaine dernière
Problématique
Via l'assistant du système d'information il n'est pas possible de filtrer sur une semaine en particulier, il faut, lors de la génération de la requête, utiliser l'option "Modifier la requête générée par l'assistant" pour y insérer une clause sur la date qui filtre les éléments sur une semaine (utilisation de between pour donner la borne minimale et la borne maximale).
Sur cette clause on va utiliser la fonction DATE() qui manipule des dates et la fonction firstdayofweek(D) qui retourne le premier jour de la semaine d'une date D.
Exemple
La requête suivante fournit le temps déclaré pour l'employé ayant le code "67" sur la semaine courante :
SELECT sum(round((declarationProduction.tempsFabrication)/3600000.0,2))
FROM DeclarationProductionEntite as declarationProduction
left outer join declarationProduction.operateur as employe
WHERE declarationProduction.dateFinValidite is null
AND employe.code = '67'
AND DATE(declarationProduction.dateDeclaration)
BETWEEN DATE(firstdayofweek(current_date())) AND DATE(firstdayofweek(current_date())) + 6 )