我有一个带有timestamp
,datatype
的字段1,值格式为2016-02-23 12:01:30
。
我正在运行查询:
UPDATE <table> set field1 = '2015-12-31'::timestamp::date where .....
输出更改为:
2015-12-31 00:00:00
它将时间转换为全零。如何更改日期并保留时间戳?
UPDATE mytable
SET field1 = '2015-12-31'::timestamp +
EXTRACT(HOUR FROM field1) * INTERVAL '1 HOUR' +
EXTRACT(MINUTE FROM field1) * INTERVAL '1 MINUTE' +
EXTRACT(SECOND FROM field1) * INTERVAL '1 SECOND'
WHERE ...
Demo here
with ats (old_tz) as (select now() )
select old_tz, '2015-12-31'::timestamptz + (old_tz - date_trunc('day', old_tz)) new_tz
from ats;
哎呀。直到发布后才意识到这篇文章的年代,但是仍然相信它可能对未来的读者有价值。所以我就离开它。