Date de naissance en SQL

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.

Date de naissance en SQL

Messagepar Pascreu » 07 Juil 2007 09:00

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
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
Avatar de l’utilisateur
Pascreu
Membre lOOyal
Membre lOOyal
 
Message(s) : 35
Inscrit le : 16 Juin 2007 07:55
Localisation : Creuse (23)

Messagepar Pierre-Yves Samyn » 07 Juil 2007 09:03

Bonjour

Voir ce fil pour un exemple de manipulation des fonctions :

http://user.services.openoffice.org/fr/forum/setopic_4354-cast.html
Pierre-Yves Samyn
Grand Maître de l'OOffice
Grand Maître de l'OOffice
 
Message(s) : 11276
Inscrit le : 02 Mai 2006 09:42

Messagepar Pascreu » 07 Juil 2007 09:10

j'ai vu le code mais je n'arrive pas à l'adapter

amicalement :cry:
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
Avatar de l’utilisateur
Pascreu
Membre lOOyal
Membre lOOyal
 
Message(s) : 35
Inscrit le : 16 Juin 2007 07:55
Localisation : Creuse (23)

Messagepar Pierre-Yves Samyn » 07 Juil 2007 11:45

Le problème est bien sûr l'enchaînement de calculs... Dans une requête ce n'est guère pratique.

La fonction :
DATEDIFF(string, datetime1, datetime2)


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.



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 :)
Pierre-Yves Samyn
Grand Maître de l'OOffice
Grand Maître de l'OOffice
 
Message(s) : 11276
Inscrit le : 02 Mai 2006 09:42

Messagepar Pascreu » 08 Juil 2007 09:24

la fonction DATEDIFF en SQL avec "yy" pour la date 26/12/93 est fausse.
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
Avatar de l’utilisateur
Pascreu
Membre lOOyal
Membre lOOyal
 
Message(s) : 35
Inscrit le : 16 Juin 2007 07:55
Localisation : Creuse (23)

Messagepar Pierre-Yves Samyn » 08 Juil 2007 10:18

Pour moi elle donne le bon résultat sachant qu'elle ne fait que l'équivalent de:
Code : Tout sélectionner   AgrandirRéduire
year(CURRENT_DATE)-year("DateNaissance")


Image
Pierre-Yves Samyn
Grand Maître de l'OOffice
Grand Maître de l'OOffice
 
Message(s) : 11276
Inscrit le : 02 Mai 2006 09:42

Messagepar Pascreu » 09 Juil 2007 07:08

bonjour,

le résultat n'est pas bon pour la date 26/12/93 "yy" = 14 et non 13 car "mm"= 6 etc...

amicalement :(
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
Avatar de l’utilisateur
Pascreu
Membre lOOyal
Membre lOOyal
 
Message(s) : 35
Inscrit le : 16 Juin 2007 07:55
Localisation : Creuse (23)

Messagepar Pierre-Yves Samyn » 09 Juil 2007 08:09

Oui j'avais compris :D

Mais :

Code : Tout sélectionner   AgrandirRéduire
2007-1993 = 14


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...
Pierre-Yves Samyn
Grand Maître de l'OOffice
Grand Maître de l'OOffice
 
Message(s) : 11276
Inscrit le : 02 Mai 2006 09:42


Retour vers Base de données

Qui est en ligne ?

Utilisateur(s) parcourant ce forum : Aucun utilisateur inscrit et 1 invité