Gå til innhold

datediff function i postgresql


Anbefalte innlegg

Tenkte å lage en datediff funksjon i postgre, men har litt problemer å finne riktig syntax.

 

hoved funksjonen er noe sånt som dette:

 

select date '2006-10-01' - date '2005-09-01'; og en får ut antall dager i mellom.

 

Kunne tenke meg en funksjon som gjør dette: t.d:

 

CREATE OR REPLACE FUNCTION sum_dato_diff(integer)

RETURNS interval AS

'SELECT date(til_dato)-date(fra_dato) as dager from saks_tab where ID=$1 '

LANGUAGE 'sql' VOLATILE;

ALTER FUNCTION sum_dato_diff(integer) OWNER TO "admin";

 

men da får jeg følgende feilmelding:

 

ERROR: return type mismatch in function declared to return interval

SQL state: 42P13

Detail: Actual return type is integer.

Context: SQL function "sum_dato_diff".

 

Laget en lignende funksjon for klokkeslett til fra :

 

CREATE OR REPLACE FUNCTION sum_fra_til(integer)

RETURNS interval AS

'SELECT sum(til_kl)-sum(fra_kl) as sum from test where kli_id=$1 '

LANGUAGE 'sql' VOLATILE;

ALTER FUNCTION sum_fra_til(integer) OWNER TO "admin";

 

Denne funker bra, men sum(date) funket ikke.

 

Noen som har en ide? Skulle vel ikke være så vanskelig å få ut antall dager fra en dato til neste?

:)

Lenke til kommentar
Videoannonse
Annonse

Fant det ut selv. Bare byttet ut interval med integer. Da gikk det:

 

CREATE OR REPLACE FUNCTION sum_dato_diff(integer)

RETURNS integer AS

'SELECT date(til_dato)-date(fra_dato) as dager from saks_tab where ID=$1 '

LANGUAGE 'sql' VOLATILE;

ALTER FUNCTION sum_dato_diff(integer) OWNER TO "admin";

:)

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...