我一个人尽可能地走得更远。
我需要在postgres中替换日期时间戳内的时间。
这:
2015年11月20日08:00:00
必须是这样:
2015年11月20日09:00:00
但一年中的每一天(只有时间会改变)
这就是我目前所拥有的。(我离得近吗?)
UPDATE
events
SET
starttime = regexp_replace(starttime,
E’[0-9]{4}-[0-9]{1,2}-[0-9]{1,2} [0-0]{1}[8-8]{1}:[0-0]{1,2}:[0-0]{1,2}’,
E’[0-9]{4}-[0-9]{1,2}-[0-9]{1,2} [0-0]{1}[9-9]{1}:[0-0]{1,2}:[0-0]{1,2}’,‘g’)
WHERE
account_id = 9
AND starttime ~ E’[0-9]{4}-[0-9]{1,2}-[0-9]{1,2} [0-0]{1}[8-8]{1}:[0-0]{1,2}:[0-0]{1,2}’;
最佳答案
我希望您的starttime
栏是timestamp
或timestamp with time zone
的,但如果我怀疑不是,它可能需要铸造。
UPDATE events SET
starttime = starttime::timestamp + '1 hour'::interval
WHERE account_id = 9 AND extract(hour from starttime::timestamp) = 8;
与Remi的答案一样,您应该参考手册了解更多关于日期时间函数的信息。
关于regex - Postgres日期时间替换正则表达式,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28853098/