[postgresql] extract() functie met een variabele

Pagina: 1
Acties:

  • MadMan81
  • Registratie: April 2000
  • Laatst online: 22-08 13:09
Ik heb een trigger geschreven voor een posgres 7.3 database en een van de dingen die ik (wil) doen is het uur uit een timestamp halen:

normaal doe je dat met bijv.
SELECT EXTRACT(HOUR FROM TIMESTAMP '2001-02-16 20:38:40');

maar wat ik wil is het volgende:
select into new_hour extract(hour from timestamp new.inserteddate);


de kolom inserteddate is van het type "timestamp without timezone"
en new_hour is een integer

als mijn trigger nu afgaat, dan krijg ik de volgende foutmelding:
WARNING: Error occurred while executing PL/pgSQL function on_insert
WARNING: line 7 at select into variables
ERROR: parser: parse error at or near "$1" at character 38

wat zie ik over het hoofd :?

Cupra Born


  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Is dat wel 'line 7' ? Ik zie er iig geen $1 tussenstaan, maar dat zegt niet perse iets natuurlijk :)

Je kon trouwens tegenwoordig toch ook zoiets doen:
variabele := extract ...

?

[ Voor 31% gewijzigd door ACM op 10-06-2003 22:05 ]


  • MadMan81
  • Registratie: April 2000
  • Laatst online: 22-08 13:09
:) ja het is idd regel 7 van het script.

Ja ik snap juist ook niet waar die $1 vandaan komt..
maar als ik new.inserteddate vervang door: ''2001-02-16 20:38:40'' dan pakt hij het wel dus het moet daar wel zitten..

Cupra Born


  • jochemd
  • Registratie: November 2000
  • Laatst online: 08-08 15:51
Volgens mij ligt het aan de combinatie met die timestamp ervoor. Wat dacht je van:
code:
1
2
SELECT INTO new_hour EXTRACT(HOUR FROM CAST(new.inserteddate AS TIMESTAMP));
SELECT INTO new_hour EXTRACT(HOUR FROM TIMESTAMP quote_literal(new.inserteddate));

  • MadMan81
  • Registratie: April 2000
  • Laatst online: 22-08 13:09
De eerste werkt :P

De tweede niet, die geeft een foutmelding.

Bedankt he! Ik zou er zelf nooit op gekomen zijn..

Cupra Born