[Résolu]Différences de deux dates
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.
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.
-
- NOOuvel adepte
- Messages : 16
- Inscription : 20 juil. 2007 19:20
[Résolu]Différences de deux dates
Bonjour,
j'ai regardé tous les messages sur ce sujet, mais rien n'y fait je ne comprends pas ou les exemples ne correspondent pas.
En effet je souhaite faire la différence entre deux dates de la forme (dd/mm/yyyy) et obtenir un résulat date sous la forme (dd/mm/yy)
Il faut faire une requête SQL avec DAteDIff mais impossible d'obtenir le résultat sous la forme demandée.
Quel calcul pourrais je faire ??
Merci beaucoup
j'ai regardé tous les messages sur ce sujet, mais rien n'y fait je ne comprends pas ou les exemples ne correspondent pas.
En effet je souhaite faire la différence entre deux dates de la forme (dd/mm/yyyy) et obtenir un résulat date sous la forme (dd/mm/yy)
Il faut faire une requête SQL avec DAteDIff mais impossible d'obtenir le résultat sous la forme demandée.
Quel calcul pourrais je faire ??
Merci beaucoup
Dernière modification par celine2512 le 27 août 2007 11:09, modifié 1 fois.
Celine Open Office 2.2.0 sous WIN XP
-
- Grand Maître de l'OOffice
- Messages : 11276
- Inscription : 02 mai 2006 08:42
Re: Différences de deux dates
Bonjour
Celui-ci où je montre comment calculer le nombre d'années en tenant compte de la date anniversaire.
Ou encore Celui-ci
dans lequel j'indique la fonction, la documentation...
et où je renonce faute de temps et d'enthousiasme...
Il faut dire que ceci prend un certain temps à rédiger :
Alors voila un exemple tout fait...
http://user.services.openoffice.org/fr/ ... 124837.odb
Je ne partage pas tout à fait ce point de vue car d'autres fils ont abordé la question.celine2512 a écrit :j'ai regardé tous les messages sur ce sujet, mais ...les exemples ne correspondent pas...
Celui-ci où je montre comment calculer le nombre d'années en tenant compte de la date anniversaire.
Ou encore Celui-ci
dans lequel j'indique la fonction, la documentation...
et où je renonce faute de temps et d'enthousiasme...
Il faut dire que ceci prend un certain temps à rédiger :
Code : Tout sélectionner
SELECT "DateNaissance", "Nom", YEAR(now())-YEAR("DateNaissance")-
case
when ( MONTH( NOW() ) < MONTH("DateNaissance") OR ( MONTH( NOW() ) = MONTH("DateNaissance") AND DAY( NOW() ) < DAY ("DateNaissance") ) )
then 1
else 0
end as "ans",
MONTH(NOW())-MONTH("DateNaissance") +
case
when MONTH(now()) <= MONTH("DateNaissance") AND day(now()) < day("DateNaissance")
then 11
else
case
when MONTH(now()) < MONTH("DateNaissance") AND day(now()) >= day("DateNaissance")
then 12
else
case
when MONTH(now()) > MONTH("DateNaissance") AND day(now()) < day("DateNaissance")
then -1
else 0
end
end
end as "mois",
datediff('DAY',
cast(
year(now()) || '-' || month(now()) -
case
when day(now()) < day("DateNaissance")
then 1
else 0
end || '-' || day("DateNaissance")
as DATE) , now() )
as "jours"
FROM "Table1"
http://user.services.openoffice.org/fr/ ... 124837.odb
-
- NOOuvel adepte
- Messages : 16
- Inscription : 20 juil. 2007 19:20
Merci beaucoup c'est tout a fait ca !
J'ai une table Administrés et dans cette table je fais donc la soustraction des dates qui marchent maintenant tres bien. Par contre je voudrais que le résultat de cette requete soit liée dans le formulaire Administré et qu'il concerne uniquement l'administré en cours. (et non comme actuellement tous les administrés de la table)
http://user.services.openoffice.org/fr/ ... 084139.odb
Ci joint ma BDD
La requete se nomme : Req_DureeServiceMil elle calcule la différence entre les champs date DateDebutServiceMilitaire et DateFInServiceMilitaire
J'ai essaye de l'associé dans le formulaire Administres en créant un sous formulaire mais impossible de faire un tri sur la requete pour afficher le résultat pour l'administré en cours.
OU sinon comment lier le résultat à un champ de la table Administré (ici, ca serait DureeServgiceMilitaire)
Désolée de demander tant de conseils !
Merci encore si vous pouvez jeter un coup d'oeil
J'ai une table Administrés et dans cette table je fais donc la soustraction des dates qui marchent maintenant tres bien. Par contre je voudrais que le résultat de cette requete soit liée dans le formulaire Administré et qu'il concerne uniquement l'administré en cours. (et non comme actuellement tous les administrés de la table)
http://user.services.openoffice.org/fr/ ... 084139.odb
Ci joint ma BDD
La requete se nomme : Req_DureeServiceMil elle calcule la différence entre les champs date DateDebutServiceMilitaire et DateFInServiceMilitaire
J'ai essaye de l'associé dans le formulaire Administres en créant un sous formulaire mais impossible de faire un tri sur la requete pour afficher le résultat pour l'administré en cours.
OU sinon comment lier le résultat à un champ de la table Administré (ici, ca serait DureeServgiceMilitaire)
Désolée de demander tant de conseils !
Merci encore si vous pouvez jeter un coup d'oeil
Celine Open Office 2.2.0 sous WIN XP
-
- Grand Maître de l'OOffice
- Messages : 11276
- Inscription : 02 mai 2006 08:42
Bonjour
Je n'ai regardé que ta table Administre... (rapidement )
Puisque tu souhaites quelques conseils je me permets ces quelques remarques préliminaires :
Bon... trève de litote : je pense que HSQL n'est pas adapté
Pour répondre maintenant plus précisément à la question :
L'exemple joint comprend un formulaire simplifié mettant en liaison la table Administre et une Vue_SM (euh... service militaire...) via un sous-formulaire.
Je n'ai pas mis de contrôle "Table" dans la mesure où je pense qu'il n'y a pas plusieurs lignes par administré.
J'utilise une vue car avec une requête le lien ne s'actualise pas lors du changement d'enregistrement.
Avec ce système, pas nécessaire d'utiliser un filtre, ni un paramètre dans la requête (par parenthèse ce type de requête nécessite une exécution SQL directe empêchant la saisie de paramètre).
Tout ceci encore une fois pour mettre en liaison le résultat "calculé" avec le numéro de sécu. Si tu veux quand même enregistrer dans la base, il faudra t'orienter vers des requêtes de mise à jour ou une macro.
Voir ici pour des exemples de requêtes
http://user.services.openoffice.org/fr/ ... 103354.odb
Je n'ai regardé que ta table Administre... (rapidement )
Puisque tu souhaites quelques conseils je me permets ces quelques remarques préliminaires :
- Un premier réflexe pour ce genre de projets devrait être : est-ce qu'une application similaire n'existe pas déjà (autre collectivité, autre administration) ?
- L'utilisation du numéro de sécurité sociale est soumis à des règles strictes (CNIL)
- Ne pas stocker dans la base des résultats de calcul (sauf cas particuliers...). Puisqu'on peut "calculer" à quoi bon enregistrer ?
- Tu ne prévois qu'un seul "Tel", s'il s'agit du numéro "perso" ?
- Les informations relatives au service militaire ne concernent (a priori...) que les hommes et pourraient donc être dans une table liée.
Bon... trève de litote : je pense que HSQL n'est pas adapté
Pour répondre maintenant plus précisément à la question :
L'exemple joint comprend un formulaire simplifié mettant en liaison la table Administre et une Vue_SM (euh... service militaire...) via un sous-formulaire.
Je n'ai pas mis de contrôle "Table" dans la mesure où je pense qu'il n'y a pas plusieurs lignes par administré.
J'utilise une vue car avec une requête le lien ne s'actualise pas lors du changement d'enregistrement.
Avec ce système, pas nécessaire d'utiliser un filtre, ni un paramètre dans la requête (par parenthèse ce type de requête nécessite une exécution SQL directe empêchant la saisie de paramètre).
Tout ceci encore une fois pour mettre en liaison le résultat "calculé" avec le numéro de sécu. Si tu veux quand même enregistrer dans la base, il faudra t'orienter vers des requêtes de mise à jour ou une macro.
Voir ici pour des exemples de requêtes
http://user.services.openoffice.org/fr/ ... 103354.odb
-
- NOOuvel adepte
- Messages : 16
- Inscription : 20 juil. 2007 19:20
-
- NOOuvel adepte
- Messages : 16
- Inscription : 20 juil. 2007 19:20
Ok je viens de voir clic droit sur le requete créer une vueceline2512 a écrit :Super merci j'ai étudié votre exemple et je vais m'en inspirer. Merci également pour les conseils
Une petite question encore je n'ai pas compris comment d'une requête SQL avez vous pu créer la vue_SM dont vous parlez ?
Celine Open Office 2.2.0 sous WIN XP
-
- Grand Maître de l'OOffice
- Messages : 11276
- Inscription : 02 mai 2006 08:42
Oui, ou si on souhaite apporter des modifications :celine2512 a écrit :clic droit sur le requete créer une vue
- Clic droit sur la requête
- Editer en mode SQL
- Sélectionner puis copier le texte
- Fermer
- Afficher les tables, cliquer sur Créer une vue
- Cliquer sur fermer (on n'ajoute pas les tables via cet outil)
- Désactiver le mode Ebauche en cliquant sur l'équerre dans la barre d'outils
- Coller le texte
-
- Membre cOOnfirmé
- Messages : 244
- Inscription : 17 janv. 2007 19:18
- Localisation : Lille(59) - Lesboeufs (80)
Bonsoir céline,
je pense être dans la même "partie" que toi.
Sincèrement en matière d'administration de ce type de personnel, tu vas devenir folle avec base.
Une base, c'est pratique pour saisir,organiser, trier, extraire des données ... Mais alors pour calculer ... ( si je te parle de date rectifiée tu vas comprendre)
Sincèrement je rejoins Pierre-Yves. Ingérable ton histoire ... sauf avec un tableur.
J'ai des tas "d'appliquettes" dans ce domaine, essentiellement sous calc. Si je peux aider ...
je pense être dans la même "partie" que toi.
Sincèrement en matière d'administration de ce type de personnel, tu vas devenir folle avec base.
Une base, c'est pratique pour saisir,organiser, trier, extraire des données ... Mais alors pour calculer ... ( si je te parle de date rectifiée tu vas comprendre)
Sincèrement je rejoins Pierre-Yves. Ingérable ton histoire ... sauf avec un tableur.
J'ai des tas "d'appliquettes" dans ce domaine, essentiellement sous calc. Si je peux aider ...
Amicalement Philippe BRONCHART
Win 10 Libre office 5.0 (perso)
Win 10 Libre office 5.0 (perso)
-
- NOOuvel adepte
- Messages : 16
- Inscription : 20 juil. 2007 19:20
Merci pour ta remarque, en fait je suis totalement novice dans open office et c'est vrai que c est un projet qui n'est à la base pas trop compatible avec la base Open Office mais on m'a demandé de le réaliser comme ceci. Donc je m'efforce d'essayer de trouver des solutions. et n'y connaissant rien en Macros c'est pas simplePhilippe BRONCHART a écrit :Bonsoir céline,
je pense être dans la même "partie" que toi.
Sincèrement en matière d'administration de ce type de personnel, tu vas devenir folle avec base.
Une base, c'est pratique pour saisir,organiser, trier, extraire des données ... Mais alors pour calculer ... ( si je te parle de date rectifiée tu vas comprendre)
Sincèrement je rejoins Pierre-Yves. Ingérable ton histoire ... sauf avec un tableur.
J'ai des tas "d'appliquettes" dans ce domaine, essentiellement sous calc. Si je peux aider ...
Bon courage à toi aussi
Celine Open Office 2.2.0 sous WIN XP