Précédent   Forum des professionnels en informatique > Bases de données > PostgreSQL
PostgreSQL Forum PostgreSQL. Avant de poster -> F.A.Q PostGreSQL Tutoriels PostGreSQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 27/09/2006, 17h25   #1
Membre habitué
 
Inscription : mai 2002
Messages : 635
Détails du profil
Informations forums :
Inscription : mai 2002
Messages : 635
Points : 109
Points : 109
Par défaut Formattage de date

Bonjour,

Pour une utilisation de la fonction age() j'ai besoin de mettre ma date au format américain yyyy/mm/dd. Or mes dates sont au format français et je ne trouve pas de fonction pour faire la conversion.

Merci à tous
viny est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/09/2006, 18h09   #2
Membre chevronné
 
Avatar de Spoutnik
 
Homme
Inscription : octobre 2003
Messages : 668
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 32
Localisation : Etats-Unis

Informations forums :
Inscription : octobre 2003
Messages : 668
Points : 746
Points : 746
hello!

je ne sais pas s'il y a une autre solution, mais essaye ceci :

Code :
to_timestamp(ta date, 'DD/MM/YYYY')
Voire ceci si tu veux garder l'heure :
Code :
to_timestamp(ta date, 'DD/MM/YYYY HH24:MI:SS')
++
__________________
Two beer or not two beer. (Shakesbeer)
Question technique par MP => poubelle!
Spoutnik est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/09/2006, 18h14   #3
Membre habitué
 
Inscription : mai 2002
Messages : 635
Détails du profil
Informations forums :
Inscription : mai 2002
Messages : 635
Points : 109
Points : 109
Non ça ne marche pas...ça me donne 0009-12-01 00:00:00+00
viny est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/09/2006, 18h35   #4
Membre chevronné
 
Avatar de Spoutnik
 
Homme
Inscription : octobre 2003
Messages : 668
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 32
Localisation : Etats-Unis

Informations forums :
Inscription : octobre 2003
Messages : 668
Points : 746
Points : 746
Quelle est ta chaine d'entrée? (date qui doit être une chaine de caractère => cast si necessaire).
Le format n'est pas bon à priori.
__________________
Two beer or not two beer. (Shakesbeer)
Question technique par MP => poubelle!
Spoutnik est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/09/2006, 18h38   #5
Membre habitué
 
Inscription : mai 2002
Messages : 635
Détails du profil
Informations forums :
Inscription : mai 2002
Messages : 635
Points : 109
Points : 109
ma date est au format date
viny est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/09/2006, 18h42   #6
Membre chevronné
 
Avatar de Spoutnik
 
Homme
Inscription : octobre 2003
Messages : 668
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 32
Localisation : Etats-Unis

Informations forums :
Inscription : octobre 2003
Messages : 668
Points : 746
Points : 746
le format, pas le type
est ce que ta date est de la forme '2006/01/15', '15/01/2006' ou '01/15/2006' voir '2006-01-15', etc ... ?
__________________
Two beer or not two beer. (Shakesbeer)
Question technique par MP => poubelle!
Spoutnik est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/09/2006, 18h44   #7
Membre habitué
 
Inscription : mai 2002
Messages : 635
Détails du profil
Informations forums :
Inscription : mai 2002
Messages : 635
Points : 109
Points : 109
Oups elle est au format 03/11/2006 soit dd/mm/yyyy
viny est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/09/2006, 18h57   #8
Membre chevronné
 
Avatar de Spoutnik
 
Homme
Inscription : octobre 2003
Messages : 668
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 32
Localisation : Etats-Unis

Informations forums :
Inscription : octobre 2003
Messages : 668
Points : 746
Points : 746
et
Code :
to_timestamp(ta date::text, 'DD/MM/YYYY')
?
avec le cast ?
et sinon que donne
?

déso, ce sera tout pour today bonne soirée

++
__________________
Two beer or not two beer. (Shakesbeer)
Question technique par MP => poubelle!
Spoutnik est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/09/2006, 19h15   #9
Membre habitué
 
Inscription : mai 2002
Messages : 635
Détails du profil
Informations forums :
Inscription : mai 2002
Messages : 635
Points : 109
Points : 109
quand je fais
Code :
SELECT to_timestamp(inscrit_date_naissance:: varchar, 'YYYY/MM/DD')
La date est au format "2006-07-04 00:00:00" c'est l'ordre que je veux mais pas le format. Je veux obtenir "2006/07/04" uniquement

merci
viny est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/09/2006, 10h44   #10
Membre chevronné
 
Avatar de Spoutnik
 
Homme
Inscription : octobre 2003
Messages : 668
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 32
Localisation : Etats-Unis

Informations forums :
Inscription : octobre 2003
Messages : 668
Points : 746
Points : 746
hello,

Je ne comprend plus rien ...

Tu veux utiliser la fonction 'age'? 'age' prend un ou deux timestamp en paramètres. Pourquoi tu veux utiliser des types 'DATE' ?

Ensuite, un timestamp est un timestamp, '2006-07-04 00:00:00' n'est qu'une représentation (un timestamp est le nombre de sec depuis le 01/01/1970), l'ordre jj/mm/aaaa n'est qu'un choix d'affichage paramétrable sans rapport avec la valeur réellement stockée (enfin, si un peu quand même hein!! ).

Ta date vient d'ou? de la base? d'un fichier texte? si ca vient de la base, sous quel type est elle enregistrée ? DATE ? TIMESTAMP ?

Peux tu mettre un exemple, avec les types de données utilisés, de ta commande 'age' stp ?

++
__________________
Two beer or not two beer. (Shakesbeer)
Question technique par MP => poubelle!
Spoutnik est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/09/2006, 10h48   #11
Membre habitué
 
Inscription : mai 2002
Messages : 635
Détails du profil
Informations forums :
Inscription : mai 2002
Messages : 635
Points : 109
Points : 109
Ma date vient de la base et est de type date
viny est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/09/2006, 10h50   #12
Membre habitué
 
Inscription : mai 2002
Messages : 635
Détails du profil
Informations forums :
Inscription : mai 2002
Messages : 635
Points : 109
Points : 109
Je me suis aperçu que la fonction age fonctionne avec un fomat américain pas un format français. L'age renvoyé n'est pas cohérent
viny est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/09/2006, 10h54   #13
Membre habitué
 
Inscription : mai 2002
Messages : 635
Détails du profil
Informations forums :
Inscription : mai 2002
Messages : 635
Points : 109
Points : 109
J'ai une fonction qui doit mettre à jour automatiquement la nuit l'age de mes membres. Cette fonction est la suivante :
Code :
1
2
3
UPDATE inscrit
SET inscrit_age = inscrit_age + 1
WHERE age(inscrit_date_naissance::timestamp) = date_trunc('year' , age(inscrit_date_naissance::timestamp))
Mais je me suis aperçu que l'age renvoyé n'est pas correct parce que le format de la date est français.

Voilà voilà où est le problème....

Quand je fais cette requête :

Code :
SELECT age(inscrit_date_naissance) FROM inscrit
Ca me renvoit des ages incorrects.
viny est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/09/2006, 11h07   #14
Membre chevronné
 
Avatar de Spoutnik
 
Homme
Inscription : octobre 2003
Messages : 668
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 32
Localisation : Etats-Unis

Informations forums :
Inscription : octobre 2003
Messages : 668
Points : 746
Points : 746
ok, alors, encore une petite question :

quel est le type de données de 'inscrit_date_naissance' , DATE ?
SI c'est bien un champ DATE, peux tu me donner qq exemples des champs 'inscrit_date_naissance' + résultat de "select extract('epoch' from inscrit_date_naissance)" pour ces mêmes valeurs.

Je me demande si ton problème vient pas d'une mauvaise conversion lors de l'insertion des données.

Je viens d'essayer dans tous les sens sur ma machine, et ca marche sans probleme, que ce soit en Fr ou EN.
__________________
Two beer or not two beer. (Shakesbeer)
Question technique par MP => poubelle!
Spoutnik est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/09/2006, 11h17   #15
Membre émérite
 
Avatar de hpalpha
 
Inscription : mars 2002
Messages : 770
Détails du profil
Informations forums :
Inscription : mars 2002
Messages : 770
Points : 833
Points : 833
je confirme ce que viens de dire spoutnik, un type date que ce soit en mdy ou dmy aura la meme incidence sur les fonctions et donc meme resultat, c'est surrement un probleme dans tes données.
hpalpha est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/09/2006, 11h29   #16
Membre habitué
 
Inscription : mai 2002
Messages : 635
Détails du profil
Informations forums :
Inscription : mai 2002
Messages : 635
Points : 109
Points : 109
inscrit_date_naissance est de type DATE
Quelques exemples : 25/09/1977, 05/05/1985, 04/07/1980

J'ai fait "ça select extract('epoch' from inscrit_date_naissance) from inscrit" et ja(i pour la pemière date 331 509 600
viny est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/09/2006, 11h46   #17
Membre chevronné
 
Avatar de Spoutnik
 
Homme
Inscription : octobre 2003
Messages : 668
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 32
Localisation : Etats-Unis

Informations forums :
Inscription : octobre 2003
Messages : 668
Points : 746
Points : 746
Citation:
Envoyé par viny
25/09/1977 => 331 509 600
Voila le problème !

Code :
SELECT timestamp 'epoch' + interval '1 sec' * 331509600
donne le 4 juillet 1980. Tu as donc un problème dans l'insertion des données. Répare ce problème et ca devrait être bon.
__________________
Two beer or not two beer. (Shakesbeer)
Question technique par MP => poubelle!
Spoutnik est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/09/2006, 11h50   #18
Membre habitué
 
Inscription : mai 2002
Messages : 635
Détails du profil
Informations forums :
Inscription : mai 2002
Messages : 635
Points : 109
Points : 109
Autant pour moi la valeur que je t'ai envoyé correspond bien au 04/07/1980 que j'ai en base.
Désolé donc le pb n'est pas résolu !
viny est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/09/2006, 18h52   #19
Membre habitué
 
Inscription : mai 2002
Messages : 635
Détails du profil
Informations forums :
Inscription : mai 2002
Messages : 635
Points : 109
Points : 109
Alors tout le monde a capitulé ?
viny est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/09/2006, 09h51   #20
Membre chevronné
 
Avatar de Spoutnik
 
Homme
Inscription : octobre 2003
Messages : 668
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 32
Localisation : Etats-Unis

Informations forums :
Inscription : octobre 2003
Messages : 668
Points : 746
Points : 746
bah vi... là, ca devient compliqué de t'aider pouisque tout semble OK

Ah si, iens, une petite chose encore que je voudrais vérifier, peux tu donner le CREATE TABLE + un jeu de valeurs stp? je testerais ca sur ma machine.
__________________
Two beer or not two beer. (Shakesbeer)
Question technique par MP => poubelle!
Spoutnik est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 12h26.


 
 
 
 
Partenaires

Hébergement Web