Précédent   Forum des professionnels en informatique > Bases de données > PostgreSQL > Requêtes
Requêtes Forum d'entraide sur les requêtes SQL spécifiques à PostgreSQL, les triggers, les vues, etc.
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 13/12/2011, 17h10   #1
Membre éclairé
 
Inscription : avril 2009
Messages : 523
Détails du profil
Informations personnelles :
Âge : 35
Localisation : France, Somme (Picardie)

Informations forums :
Inscription : avril 2009
Messages : 523
Points : 305
Points : 305
Par défaut Comment remplacer la date d'un champ timestamp par une autre date ?

bonjour,

j'ai une table ayant 3 champs :

un id,
une heure d'arrivée prévue : timestamp 2011-10-13 08:00:00
une heure d'arrivée effective : timestamp 2011-12-13 08:05:00

Mes heures d'arrivée prévue sont fausses (mauvaise date)
pour corriger le tire, j'aimerao remplacer la partie heure du champ prevu par la partie heure du champ Effective.

comment faire ?

idéalement j'aimerai faire ça :
update matable set prevu=date(effective) ' ' heure (prevu) where id= xxxx
Basiquement j'ai besoin de recopier dans mon premier champs la même date que le deuxieme champs tout en gardant l'heure d'origine.

j'aimerai donc avoir :
une heure d'arrivée prévue : timestamp 2011-12-13 08:00:00
une heure d'arrivée effective : timestamp 2011-12-13 08:05:00

mais voilà, il n'y a pas dans postgres de fonction qui donne la partie horaire d'un timestamp ou qui change juste la date d'un timestamp.

Du coup je suis coincé. comment faire ?
Michael REMY est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/12/2011, 17h22   #2
Expert Confirmé
 
Homme
Inscription : mai 2002
Messages : 1 655
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 29
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : mai 2002
Messages : 1 655
Points : 2 657
Points : 2 657
Citation:
mais voilà, il n'y a pas dans postgres de fonction qui donne la partie horaire d'un timestamp ou qui change juste la date d'un timestamp.
Bonjour,

Biensur que si (extract) http://www.postgresql.org/docs/9.1/s...-datetime.html


Sinon pour votre problème, il faut jouer avec les intervals.
Typiquement vous allez retrouver le nombres de jour qui sépare vos deux timestamp (en les castant en type date auparavant) et additionner cette différences à votre timestamp actuel
punkoff est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/12/2011, 17h25   #3
Membre éclairé
 
Inscription : avril 2009
Messages : 523
Détails du profil
Informations personnelles :
Âge : 35
Localisation : France, Somme (Picardie)

Informations forums :
Inscription : avril 2009
Messages : 523
Points : 305
Points : 305
oui j'ai vu cette fonction, mais EXTRACT ne permet d'extraire que les heures ou que les minutes ou que les secondes et pas toute la partie horaire en même temps (une seule étape)
Michael REMY est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/12/2011, 17h27   #4
Membre éclairé
 
Inscription : avril 2009
Messages : 523
Détails du profil
Informations personnelles :
Âge : 35
Localisation : France, Somme (Picardie)

Informations forums :
Inscription : avril 2009
Messages : 523
Points : 305
Points : 305
bon finalement j'ai réussi à bidouiller une solution qui semble fonctionner :
Code :
1
2
3
4
 
UPDATE matable 
SET prevu=cast(REPLACE(prevu,date(prevu),date(effective)) AS timestamp)
WHERE id=XXX
Michael REMY 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 03h30.


 
 
 
 
Partenaires

Hébergement Web