3
我的任務是在3,5,7天后歸檔數據。PostgreSQL中具有不同時區的時間戳
我使用PostgreSQL。有些表具有帶時區的時間戳項,有些則沒有。到目前爲止,在相同的時間點上我會得到不同的值。我如何規範化這些數據集以獲得我的檔案中的一致性數據集?
日期類似於「2011-08-01 17:03:19 + 05:30」。
CREATE OR REPLACE FUNCTION archive(tablename text, fieldname text, days integer, archivepath text)
RETURNS text AS
$BODY$
declare
format_date text;
fileName text;
totalCount integer;
fileNamewithCount text;
stmt text;
BEGIN
format_date:=to_char(localTIMESTAMP,'YYYYmmddhhmmss');
stmt := 'SELECT COUNT(*) FROM '|| tableName ||' WHERE DATE('||fieldName||') < DATE(CURRENT_DATE -'||days ||')';
EXECUTE stmt INTO totalCount;
IF totalCount > 0 THEN
--raise notice 'format_date : %',format_date;
fileName := 'D:/' || '/' || archivepath || '/' || tableName || '_' || format_date ||'.csv';
EXECUTE 'COPY (SELECT * FROM ' || quote_ident(tableName) || ' where date(' || quote_ident(fieldName)||') < date((current_date - integer '''|| days ||''')) limit 100000) TO '''|| fileName ||''' WITH CSV HEADER';
EXECUTE 'DELETE FROM ' || quote_ident(tableName) ||' where date(' || quote_ident(fieldName) || ') < date((current_date - integer '''||days ||'''))';
END IF;
fileNamewithCount := totalCount || '--' || fileName ;
RETURN fileNamewithCount;
EXCEPTION
WHEN OTHERS THEN RAISE EXCEPTION 'ERROR: % : %.',SQLSTATE,SQLERRM;
END;$BODY$
LANGUAGE plpgsql VOLATILE
COST 100;
ALTER FUNCTION archive(text, text, integer, text) OWNER TO postgres;
等待,什麼是你的問題? – Dave
@Dave我重寫了它,所以現在它是一個問題。 –