我们是一个开发团队,在Jira遇到了一个奇怪的错误。试图清除我们想要在Jira数据库中更新弹簧日期的bug。
我们正在使用Windows服务器,并且我们已经安装了Postgres。
我找到了相关的表格,当我写的时候
select *
from "AO_60DB71_SPRINT"
找到这个:
封闭; Complete_Date;结束日期; ID;名称; Rapid_View_ID;序列;开始; START_DATE
t; 1433318043661; 1433226900000; 1;“Sprint 1”; 1 ;; t; 1432190100102 t; 1433924067416; -61680144720000; 2;“Sprint 2”; 1 ;; t; -61681095120000 t; 1434528978422; -61679885580000; 3;“Sprint 3”; 1 ;; t; -61680144780000 t; 1435130684508; -61678935480000; 4;“Sprint 4”; 1 ;; t; -61679540276038 t; 1435735227248; -61678337460000; 5;“Sprint 5”; 1 ;; t; -61679115060000 t; 1436340875991; -61677749880000; 6;“Sprint 6”; 1 ;; t; -61678354663584 t; 1436944702756; -61677125820000; 7;“Sprint 7”; 1 ;; t; -61677730634396 t; 1437549239766; -61676517000000; 8;“Sprint 8”; 1 ;; t; -61677121774120 t; 1438154558709; -61675915920000; 9;“Sprint 9”; 1 ;; t; -61676520745914 t; 1438764063437; -61675313460000; 10;“Sprint 10”; 1 ;; t; -61675918235812 t; 1439366509383; -61674701940000; 11;“Sprint 11”; 1 ;; t; -61675306752010 t; 1439970303684; -61674080220000; 12;“Sprint 12”; 1 ;; t; -61674703008615 f ;; 1440602460000; 13;“Sprint 13”; 1 ;; t; 1439979707567
这里有趣的字段是存储为bigints的日期值。其中一些值为正值,其他值为负值。
当我通过写作来查看日期代表的内容时
select TO_TIMESTAMP("START_DATE" / 1000)
from "AO_60DB71_SPRINT"
“2015-05-21 08:35:00 + 02”
“0015-05-28 11:28:00 + 01”
“0015-06-08 11:27:00 + 01”
“0015-06-15 11:22:04 + 01”
“0015-06-20 09:29:00 + 01”
“0015-06-29 04:42:17 + 01”
“0015-07-06 10:02:46 + 01”
“0015-07-13 11:10:26 + 01”
“0015-07-20 10:07:35 + 01”
“0015-07-27 09:29:25 + 01”
“0015-08-03 11:20:48 + 01”
“0015-08-10 11:03:12 + 01”
“2015-08-19 12:21:47 + 02”
我想要实现的是对上一列的更新,其中0015年的所有日期都应更新为(bigint对应的)2015年。
我的计划是这样的:
Select
"START_DATE",
EXTRACT(EPOCH FROM INTERVAL '2000 years')*1000 + "START_DATE"
from "AO_60DB71_SPRINT"
但是第二行的结果数据类型是double。
我的问题到底是
提前致谢
答案 0 :(得分:2)
您正在更新的字段似乎无害,因此执行此列的更新几乎没有风险。
您可以在Start_Date
查询中自行引用UPDATE
的值。并且还可以使用WHERE
子句来缩小目标行。
使用::type
表示法完成转化。
可以执行您想要的查询:
UPDATE AO_60DB71_SPRINT
SET Start_Date = Start_Date + (EXTRACT(EPOCH FROM INTERVAL '2000 years')*1000)::bigint
WHERE Start_Date < 0;
成功时,它应返回UPDATE <count>
,不需要COMMIT
。