如何更新postgres中时间戳字段的一部分?

时间:2016-06-17 03:47:40

标签: sql postgresql sql-update timestamp

示例:我的时间戳:2018-01-01 00:00:00.000在表temp和field temp_date中。 我想通过SQL更新2018年到2016年。我怎么能?

2 个答案:

答案 0 :(得分:6)

UPDATE temp
SET temp_date = temp_date - interval '2 years'
WHERE EXTRACT (YEAR FROM temp_date) = 2018;

如果您想将其设置为确切的年份,例如如果您的WHERE条款使用的不是年份,或者您根本不使用WHERE条款:

UPDATE temp
SET temp_date = temp_date +
    (2016 - EXTRACT(YEAR FROM temp_date) || ' years')::interval
WHERE foo = 'bar';

有关详细信息,请参阅the mailing list

答案 1 :(得分:1)

尝试:

UPDATE temp
   SET temp_date = temp_date - (date_trunc('year', temp_date ) - date '2016-1-1')

以上更新将“2016”分配给表格中的所有日期,以保留剩余日期部分(月 - 日 - 小时等)不变