miknira Skrevet 12. januar 2007 Del Skrevet 12. januar 2007 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
miknira Skrevet 12. januar 2007 Forfatter Del Skrevet 12. januar 2007 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
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå