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
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
hello!
je ne sais pas s'il y a une autre solution, mais essaye ceci :
Voire ceci si tu veux garder l'heure :
Code : Sélectionner tout - Visualiser dans une fenêtre à part to_timestamp(ta date, 'DD/MM/YYYY')
++
Code : Sélectionner tout - Visualiser dans une fenêtre à part to_timestamp(ta date, 'DD/MM/YYYY HH24:MI:SS')
Non ça ne marche pas...ça me donne 0009-12-01 00:00:00+00
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.
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 ... ?
et?
Code : Sélectionner tout - Visualiser dans une fenêtre à part to_timestamp(ta date::text, 'DD/MM/YYYY')
avec le cast ?
et sinon que donne
?
Code : Sélectionner tout - Visualiser dans une fenêtre à part select ta_date::text
déso, ce sera tout pour todaybonne soirée
++
quand je faisLa 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
Code : Sélectionner tout - Visualiser dans une fenêtre à part select to_timestamp(inscrit_date_naissance:: varchar, 'YYYY/MM/DD')
merci
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 ?
++
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
J'ai une fonction qui doit mettre à jour automatiquement la nuit l'age de mes membres. Cette fonction est la suivante :
Mais je me suis aperçu que l'age renvoyé n'est pas correct parce que le format de la date est français.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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))
Voilà voilà où est le problème....
Quand je fais cette requête :
Ca me renvoit des ages incorrects.
Code : Sélectionner tout - Visualiser dans une fenêtre à part SELECT age(inscrit_date_naissance) FROM inscrit
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.
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.
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
Voila le problème !Envoyé par viny
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.
Code : Sélectionner tout - Visualiser dans une fenêtre à part select timestamp 'epoch' + interval '1 sec' * 331509600
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 !![]()
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.
Partager