【发布时间】:2015-11-13 00:05:18
【问题描述】:
我们是一个开发团队,在 Jira 中遇到了一个奇怪的错误。试图清理我们想要更新 Jira 数据库中弹簧日期的错误。
我们使用的是 Windows 服务器,并且我们在上面安装了 Postgres。
我找到了相关的表和我写的时候
select *
from "AO_60DB71_SPRINT"
找到这个:
关闭;完成日期;结束日期; ID;姓名; Rapid_View_ID;顺序;开始;开始日期
t;1433318043661;1433226900000;1;“冲刺 1”;1;;t;1432190100102 t;1433924067416;-61680144720000;2;“冲刺 2”;1;;t;-61681095120000 t;1434528978422;-61679885580000;3;“冲刺 3”;1;;t;-61680144780000 t;1435130684508;-61678935480000;4;“冲刺 4”;1;;t;-61679540276038 t;1435735227248;-61678337460000;5;“冲刺 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;“冲刺 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
这里有趣的字段是存储为 bigint 的日期值。其中一些值为正值,其他值为负值。
当我通过书写查看日期所代表的含义时
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 插入 bigint 列的位置进行更新是否安全?
- 如果没有,我的转换中缺少什么步骤?
- 对于 postgres 完全是新手,如何进行更新?
- 之后我需要提交吗?
提前致谢
【问题讨论】:
-
我只有一个问题:为什么有人会在整数列中存储日期或时间戳?
-
我问自己同样的事情!我认为这是 Jira/Atlassian 的事情。不过不确定。我们安装了产品,发现了这个奇怪的地方并解决了我们的问题..
标签: postgresql datetime bigint