[Résolu] soustraction 1 an à champ date

Discussions sur le module de base de données Base et plus particulièrement sur le langage SQL ou sur les connexions aux SGBD tiers.
Les questions sur les macros doivent être postées dans la section dédiée en dessous.

Modérateur : Vilains modOOs

Règles du forum
Cette section est dédiée au module Base et plus particulièrement sur le langage SQL ou sur les connexions aux SGBD tiers. Vous ne devez pas poster ici de questions sur les macros mais utiliser la section éponyme.
Pour accélérer les réponses, vous pouvez mettre en ligne votre base en joignant un fichier ODB : comment faire.
wormsf
Membre hOOnoraire
Membre hOOnoraire
Messages : 166
Inscription : 02 janv. 2008 16:15

[Résolu] soustraction 1 an à champ date

Message par wormsf »

Bonjour
j'ai un requete ou je compare le champ date de la table Cotisation au champ DATE_MIN de la table EXERCICE

Code : Tout sélectionner

"Cotisation"."date" >= ( SELECT "DATE_MIN" FROM "EXERCICE")
c'est OK

je veux comparer la date à DATE_MIN - 1 an, j'ai essayé les 2 instructions suivantes, cela ne marche pas

Code : Tout sélectionner

"Cotisation"."date" >= ( DATE_SUB (SELECT "DATE_MIN" FROM "EXERCICE",INTERVAL 1 YEAR) )
erreur : unexpected "(" expecting ")"
ou

Code : Tout sélectionner

"Cotisation"."date" >= ( SELECT DATE_SUB ("DATE_MIN" FROM "EXERCICE",INTERVAL 1 YEAR) )
Cordialement
Dernière modification par wormsf le 31 mai 2018 20:22, modifié 1 fois.
Libreoffice Version:7.5.8.2

Linux Mint 21.2
Noyau linux 5.15.0-91-generic
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 25173
Inscription : 03 mars 2006 07:45
Localisation : 127.0.0.1

Re: soustraction 1 an à champ date

Message par Dude »

wormsf a écrit :j'ai essayé les 2 instructions suivantes, cela ne marche pas
"marche pas" n'est pas une phrase qui aide à comprendre.
Tout dépend du moteur de base que tu utilises, les instructions que tu donnes ne sont pas reconnues sauf à utiliser MySQL.

Comme d'habitude, et c'est lassant d'avoir à le répéter, fournir un ODB facilite le travail de réponse.

Les instructions de Date/Heure valides pour HSQL sont documentées dans le Wiki.

Code : Tout sélectionner

SELECT "DATE_MIN" 
FROM "EXERCICE" 
WHERE YEAR("DATE_MIN") = YEAR(CURDATE())-1
wormsf
Membre hOOnoraire
Membre hOOnoraire
Messages : 166
Inscription : 02 janv. 2008 16:15

Re: soustraction 1 an à champ date

Message par wormsf »

Quelques précision
dans la base FVP.odb,
FVP.odb
Il y a une table cotisation avec les dates de cotisation montants et détail
il y a une table EXERCICE avec entre autre la date de début d'exercice DATE_MIN et un indicateur PERIODE TRANSITOIRE
Capture du 2018-05-31 11-13-37.png
dans la requete adherents : cotisation banque par date
si l'indicateur PERIODE TRANSITOIRE est = "N" , je liste les opérations dont la date est >= DATE_MIN
si l'indicateur PERIODE TRANSITOIRE est = "O" , je veux lister les opérations dont la date est >= DATE_MIN - 1 AN

Comme je ne sais pas faire cette opération j'ai ajouté un champ DATE_MIN_PRE
Je voudrais supprimer ce champ

Coridalement
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Dernière modification par wormsf le 31 mai 2018 19:44, modifié 1 fois.
Libreoffice Version:7.5.8.2

Linux Mint 21.2
Noyau linux 5.15.0-91-generic
Piaf
GourOOu
GourOOu
Messages : 5622
Inscription : 25 nov. 2011 18:07
Localisation : Guyane

Re: soustraction 1 an à champ date

Message par Piaf »

Bonjour
wormsf a écrit :Comme je ne sais pas faire cette opération j'ai ajouté un champ DATE PRECEDENTE
Je voudrais supprimer ce champ
Tu peux tester

Code : Tout sélectionner

SELECT "ID", "ANNEE", "SERIE_DON", "DATE_MIN", "PAR_ELEVE", "PAR_ETUDIANT", "PRIME_RENTREE_LYCEE", "PRIME_RENTREE_SUP", "TRANSIT", CAST( YEAR( "DATE_MIN" ) - 1 || '-' || MONTH( "DATE_MIN" ) || '-' || DAY( "DATE_MIN" ) AS DATE ) AS "DTEPRE" FROM "EXERCICE"
comme Vue.
A+
Libre Office Version: 6.1.6 et Apache OpenOffice 4.1.6 Sur Xubuntu 18.04 AMD64
wormsf
Membre hOOnoraire
Membre hOOnoraire
Messages : 166
Inscription : 02 janv. 2008 16:15

Re: soustraction 1 an à champ date

Message par wormsf »

Piaf
Merci pour la solution
effectivement ça marche avec une vue ou on crée le champ DATE_MIN_PRE
CAST( YEAR( "DATE_MIN" ) - 1 || '-' || MONTH( "DATE_MIN" ) || '-' || DAY( "DATE_MIN" ) AS DATE ) AS "DTEPRE"
Salut
Libreoffice Version:7.5.8.2

Linux Mint 21.2
Noyau linux 5.15.0-91-generic