示例:我的时间戳:2018-01-01 00:00:00.000在表temp和field temp_date中。 我想通过SQL更新2018年到2016年。我怎么能?
答案 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”分配给表格中的所有日期,以保留剩余日期部分(月 - 日 - 小时等)不变