我一个人尽可能地走得更远。
我需要在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栏是timestamptimestamp 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/

10-12 13:08