Date de naissance en SQL
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.
-
- Membre lOOyal
- Messages : 35
- Inscription : 16 juin 2007 06:55
- Localisation : Creuse (23)
Date de naissance en SQL
Bonjour,
je n'arrive pas à traduire cette formule en SQL
Age=(ANNEES(DtNaiss; MAINTENANT();0)) & "a " & (NB.MOIS(DtNaiss;
MAINTENANT();0) - (ANNEES(DtNaiss; MAINTENANT(); 0))*12) & "m " &
(SI(JOUR(MAINTENANT()) - JOUR(DtNaiss) >=0; JOUR(MAINTENANT()) -
JOUR(DtNaiss); JOUR(MAINTENANT()) + (JOURSDANSMOIS(MOIS.DECALER
(MAINTENANT(); -1)) - JOUR(DtNaiss)))) & "j"
je voudrais l'age en : jours – mois – années.
merci
je n'arrive pas à traduire cette formule en SQL
Age=(ANNEES(DtNaiss; MAINTENANT();0)) & "a " & (NB.MOIS(DtNaiss;
MAINTENANT();0) - (ANNEES(DtNaiss; MAINTENANT(); 0))*12) & "m " &
(SI(JOUR(MAINTENANT()) - JOUR(DtNaiss) >=0; JOUR(MAINTENANT()) -
JOUR(DtNaiss); JOUR(MAINTENANT()) + (JOURSDANSMOIS(MOIS.DECALER
(MAINTENANT(); -1)) - JOUR(DtNaiss)))) & "j"
je voudrais l'age en : jours – mois – années.
merci
OO.o 3.3.0 sous Windows XP pro SP3
OO.o 3.3.0 sous Windows Vista
LibreOffice 3.3.0 sous Windows Vista
OO.o 3.3.0 sous Windows Vista
LibreOffice 3.3.0 sous Windows Vista
-
- Grand Maître de l'OOffice
- Messages : 11276
- Inscription : 02 mai 2006 08:42
Bonjour
Voir ce fil pour un exemple de manipulation des fonctions :
http://user.services.openoffice.org/fr/ ... -cast.html
Voir ce fil pour un exemple de manipulation des fonctions :
http://user.services.openoffice.org/fr/ ... -cast.html
-
- Membre lOOyal
- Messages : 35
- Inscription : 16 juin 2007 06:55
- Localisation : Creuse (23)
-
- Grand Maître de l'OOffice
- Messages : 11276
- Inscription : 02 mai 2006 08:42
Le problème est bien sûr l'enchaînement de calculs... Dans une requête ce n'est guère pratique.
La fonction :
cf. la documentation
devrait permettre d'arriver au résultat...
Cela dit, ce serait plus simple par macro..., et j'avoue ne pas avoir ni le temps ni le courage de compléter ma requête précédente
La fonction :
returns the count of units of time elapsed from datetime1 to datetime2. The string indicates the unit of time and can have the following values 'ms'='millisecond', 'ss'='second','mi'='minute','hh'='hour', 'dd'='day', 'mm'='month', 'yy' = 'year'. Both the long and short form of the strings can be used.DATEDIFF(string, datetime1, datetime2)
cf. la documentation
devrait permettre d'arriver au résultat...
Cela dit, ce serait plus simple par macro..., et j'avoue ne pas avoir ni le temps ni le courage de compléter ma requête précédente
-
- Membre lOOyal
- Messages : 35
- Inscription : 16 juin 2007 06:55
- Localisation : Creuse (23)
-
- Grand Maître de l'OOffice
- Messages : 11276
- Inscription : 02 mai 2006 08:42
Pour moi elle donne le bon résultat sachant qu'elle ne fait que l'équivalent de:
Code : Tout sélectionner
year(CURRENT_DATE)-year("DateNaissance")
-
- Membre lOOyal
- Messages : 35
- Inscription : 16 juin 2007 06:55
- Localisation : Creuse (23)
-
- Grand Maître de l'OOffice
- Messages : 11276
- Inscription : 02 mai 2006 08:42
Oui j'avais compris
Mais :
C'est ce que fait DateDiff et donc pour moi le résultat est bon.
En revanche, je suis d'accord que cela ne donne pas ce que tu espéres à savoir la prise en compte du nombre de mois...
Mais :
Code : Tout sélectionner
2007-1993 = 14
En revanche, je suis d'accord que cela ne donne pas ce que tu espéres à savoir la prise en compte du nombre de mois...