miknira Skrevet 12. januar 2007 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?
miknira Skrevet 12. januar 2007 Forfatter 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";
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å