2016-05-11 11 views
0

blieb auf etwas stecken, von dem ich annahm, dass es einfach wäre. Ich versuche eine EPOCH-Spalte von Jahr 2013 bis 2015 für einige Testdaten zu aktualisieren.PostgreSQL - Epoch-Feld aktualisieren - YEAR-Teil NUR

Ich habe versucht:

update cache set "Time" = "Time" + 31556926*2 
where date_part('year', to_timestamp("Time")) = '2013'; 

aber, dass das Jahr nicht nur, dass ändern, sondern auch die anderen Werte, Monat/Tag und Zeit jetzt alle vermasselt werden.

Wie lautet die korrekte Syntax, um NUR das Jahr in einer Tabelle aktualisiert zu bekommen? Hier

Antwort

0

ist, was funktioniert hat:

update "diskspacebyfilesys" 
set "Time" = (select extract ('epoch' from (to_timestamp("Time") + interval '1 year'))) 
where date_part('year', to_timestamp("Time")) = '2013'; 
0

Filterung nach date_part('year', to_timestamp("Time")) = '2013' funktioniert, aber es ist nicht sargable, und es ist nicht so schlecht für den gelegentlichen Admin-Jobs, aber für regelmäßige Updates können Sie die folgenden stattdessen betrachten:

update "diskspacebyfilesys" 
    set "Time" = extract ('epoch' from to_timestamp("Time") + interval '1 year') 
where "Time" >= extract('epoch' from '2013-01-01'::date) and 
     "Time" < extract('epoch' from '2014-01-01'::date); 
Verwandte Themen