陷入了我认为很容易的事情。 我正在尝试更新2013年至2015年的EPOCH专栏,以获取一些测试数据。
我试过了:
update cache set "Time" = "Time" + 31556926*2
where date_part('year', to_timestamp("Time")) = '2013';
但这不仅改变了一年,而且其他价值观,月/日和时间现在都搞砸了。
只有在表中更新年份的正确语法是什么?
答案 0 :(得分:0)
这是有效的:
update "diskspacebyfilesys"
set "Time" = (select extract ('epoch' from (to_timestamp("Time") + interval '1 year')))
where date_part('year', to_timestamp("Time")) = '2013';
答案 1 :(得分:0)
按date_part('year', to_timestamp("Time")) = '2013'
过滤有效,但不是sargable,对于偶尔的管理工作来说也不算太糟糕,但对于定期更新,您可能会考虑以下内容:
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);