PostgreSQL La base de donnees la plus sophistiquee au monde.

Forums PostgreSQL.fr

Le forum officiel de la communauté francophone de PostgreSQL

Vous n'êtes pas identifié(e).

#1 06/12/2013 16:49:52

ericnya
Membre

pgscript addition et sauvegarde timestamp dans une variable

Bonjour,

je suis débutant sur pgScript et je ne parviens pas à
faire des opérations basiques avec les dates et la sauvegarde des valeurs dans des variables.

1) Je cherche à sauvegarder le temps système dans une variable sans utiliser le SELECT.

set @DATE1 = select (localtimestamp); -- Récupération de l'heure actuelle du système
 print 'DATE10= ' + cast (@DATE1 as string);

Résulat: [PGSCRIPT ] DATE10= ("2013-12-06 15:38:22.499").
Les guillemets qui apparaissent m'empêchent de faire des opérations avec ces dates.
Si je fais une comparaison if ("2013-10-00 15:38:22.499") < DATE1 le résultat est toujours faux ce qui n'est pas vrai.

2) Même problème lorsque je veux extraire l'année pour concaténer, et constituer une autre date j'ai ce problème.

 	   set @AAAA1 = SELECT EXTRACT(year FROM  TIMESTAMP  '@DATE1');   	
	   set @MM1 = SELECT EXTRACT(month FROM  TIMESTAMP  '@DATE1');
	   set @JJ1 = SELECT EXTRACT(DAY FROM  TIMESTAMP  '@DATE1');	
	  SET @DATE10 = cast (@AAAA1 as string)+'-'+cast (@MM1 as string)+'-'+cast (@JJ1 as string)+' 23:59:00';

Le résultat donne: [PGSCRIPT ] DATE10 = ("2013")-("12")-("7") 23:59:00
ce résultat n'a rien à voir avec une date. Je souhaitais l'avoir au format '2013-12-07 23:9:00'.

D'avance, je vous remercie pour votre aide

Hors ligne

#2 06/12/2013 18:22:55

rjuju
Administrateur

Re : pgscript addition et sauvegarde timestamp dans une variable

Bonjour,

Vous devriez faire plus simple, par exemple «SELECT to_char(localtimestamp,'YYYY-MM-DD 23:59:00');»

Hors ligne

#3 09/12/2013 17:24:26

ericnya
Membre

Re : pgscript addition et sauvegarde timestamp dans une variable

rjuju a écrit :

Bonjour,

Vous devriez faire plus simple, par exemple «SELECT to_char(localtimestamp,'YYYY-MM-DD 23:59:00');»

Merci de votre réponse !
mais je ne vous ai pas bien compris car avec ou sans to_char dans ce code

 set @DATE1 = SELECT to_char(localTIMESTAMP, '2001-03-02 23:59:00') ; 
set @DATE0Min = SELECT TIMESTAMP '2001-03-02 23:59:00'; 

j'obtiens le même résultat [PGSCRIPT ] ("2013-12-04 22:09:00")


Ma question concerne:
1- L'extraction des données si cette formule n'est pas correcte

 set @AAAA1 = SELECT EXTRACT(year FROM  TIMESTAMP  '@DATE1'); 

2- La concaténation des données sans qu'il y'ai ("2013")

 SET @DATE10 = cast (@AAAA1 as string)+'-'+...

avec la formule appropriée
3- L'addition des datesheures. cette formule semble bien fonctionner:

 set @DATE0Min = SELECT TIMESTAMP '@DATE0' + interval ' 2 day'; 

4- le tout SAUVEGARDE DANS UNE VARIABLE qu'on peut manipuler (additionner les minutes).

 set @DATE0Min = ....

.
Je vous remercie d'avance

Hors ligne

#4 09/12/2013 21:38:13

rjuju
Administrateur

Re : pgscript addition et sauvegarde timestamp dans une variable

La requête en question était à utiliser tel quel :

set @LADATE = SELECT to_char(localtimestamp,'YYYY-MM-DD 23:59:00');
print 'date : ' + cast(@LADATE as string);
set @LADATE2 = SELECT TIMESTAMP '@LADATE' + interval ' 2 day'; 
print @LADATE2 ;

Mais encore une fois, pgscript n'est pas forcément la meilleure solution, étant donné que cela ne marchera qu'avec pgAdmin. Idéalement utilisez une seule requête pour obtenir votre résultat, et si ce n'est pas possible, utilisez plutôt une procédure stockée (ou une fonction anonyme si vous êtes au moins en 9.0 : http://docs.postgresql.fr/9.0/sql-do.html ).

Hors ligne

#5 10/12/2013 11:21:23

ericnya
Membre

Re : pgscript addition et sauvegarde timestamp dans une variable

Merci de la précision !
ça répond à ma question.

Hors ligne

Pied de page des forums