Plpgsql - Custom fields Postgres 9.5

From: Patrick B <patrickbakerbr(at)gmail(dot)com>
To: pgsql-general <pgsql-general(at)postgresql(dot)org>
Subject: Plpgsql - Custom fields Postgres 9.5
Date: 2016-12-14 21:17:09
Message-ID: CAJNY3iujvNhQVTv8XjEbyvBkpKAwyzYhKZgfrTEyvfuuoUgLzQ@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

Hi,

I've got this query, that I manually run it once a month:

SELECT
uuid,
clientid),
*
FROM
logging
WHERE
logtime
BETWEEN
'201611015'
AND
'201612015'

As you can see, I select a date. So in December, the date will be: *BETWEEN
'201612015' AND '201601015'*, for example.

I always need to run this on the 15th of each month.
I was thinking about creating a PLPGSQL function and a Cron task, so this
task can be automated.

Also, the file must be saved with the date+.csv. Example:

CREATE or REPLACE FUNCTION logextract(date_start integer, date_end integer)

RETURNS void AS $$

begin

execute '

COPY

(

SELECT

uuid,

clientid),

*

FROM

logging

WHERE

logtime

BETWEEN

' || date_start || '

AND

' || date_end || '

)

TO ''/var/lib/postgresql/'|| date_start ||'_logs.csv''';

end

$$ language 'plpgsql';

*Questions:*

1. Why when I run the function manually I get this error?

select logextract(201612015, 201612015);

ERROR: operator does not exist: timestamp without time zone >= integer

LINE 13: BETWEEN

I presume this is wrong: *CREATE or REPLACE FUNCTION logextract(date_start
integer, date_end integer) *- But what should I use instead?

2. To call the function, I have to login to postgres and then run: select
logextract(201612015, 201612015);
How can I do it on cron? because the dates will be different every time.

Thanks
Patrick

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Adrian Klaver 2016-12-14 21:23:02 Re: Plpgsql - Custom fields Postgres 9.5
Previous Message Shakti Singh 2016-12-14 20:18:46 Re: PostgreSQL 9.6.1: Debug window does not load function sql