PostgreSQL - 更新纪元字段 - 仅限YEAR部分

时间:2016-05-11 13:39:57

标签: postgresql sql-update

陷入了我认为很容易的事情。 我正在尝试更新2013年至2015年的EPOCH专栏,以获取一些测试数据。

我试过了:

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

但这不仅改变了一年,而且其他价值观,月/日和时间现在都搞砸了。

只有在表中更新年份的正确语法是什么?

2 个答案:

答案 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);