今天早上,项目站会,在澳大利亚的客户说,我们应该在提交代码之前在本地跑测试。
我心里觉得委屈啊,我提交代码的时候的确都是跑了测试的啊。
多争无益,于是,我又去看看代码到底是不是有什么问题。
在我的DA(Desktop Anywhere)中,我使用和CI上相同的命令又跑了一次,还是OK的。
在这里被卡住了一下,于是找澳大利亚的客户帮忙看看是不是CI上的配置发生了变化。
客户说CI是OK的,他把代码update到他的DA上跑,也是挂的。
我又找另外一个在成都的同事,用他的DA跑一次,也是OK的。
奇怪。。。
NND,难道是RP有被虐了。
后来想到代码中有一段逻辑是和时间相关的,难道是因为成都和澳大利亚的时差造成的?
试试看,把DA的时区改成了澳大利亚时区(UTC+10)。
嘿嘿,还真的出现问题了。
我们使用的数据库是18摸的数据库,在创建一个新的record的时候,使用的是“CURRENT TIMESTAMP”
这个时候,“CURRENT TIMESTAMP”是不包含时区信息的。
于是,查阅了文档以后,我们把SQL改成了“CURRENT TIMESTAMP WITH TIME ZONE”。(CURRENT TIMESTAMP文档)
满心欢喜的认为应该可以解决这个问题了。
但是,又挂了。
日本人。
终于,也就是finally,我们找到了这个文档(CURRENT TIMESTAMP WITH TIME ZONE之于Java)
原来在创建表的时候,column的数据类型应该设置成CURRENT TIMESTAMP WITH TIME ZONE。
而且,在读取,更新这个column的时候,应该使用的是com.ibm.db2.jcc.DBTimestamp。
人艰不拆啊