JCh*_*her 7 java database epoch
我想在数据库中使用Long数据类型来表示日期(自纪元以来的毫秒).原因是,jdbc驱动程序和Oracle引擎的存储日期非常复杂.如果在preparedStatement中提交了错误的数据类型,它会将时间戳转换为日期(反之亦然),从而导致索引断开,导致在最坏的情况下进行全表扫描.我不记得细节,但我知道有细节需要记住.我不想记住细节.似乎只是存储日期很长(自纪元以来毫秒)在这里工作就好了,我没有什么可记住的.
请注意,我觉得时区只是表现性的.它永远不应该存储在第一位.大多数公司都有仅使用UTC的政策,但再一次,这只是了解更多信息.让我们只存储自纪元以来的毫秒数,并在显示时向用户显示millis格式化为他们的特定时区.
编辑:似乎数百万美元的错误和浪费的生产力/混乱围绕时区和日期格式,以及疯狂的jdbc驱动程序日期转换/转换.让我们一劳永逸地废除它.
我现在意识到反对做我建议的另一个原因是我们可能想要节省数据库中的空间.在那种情况下,我们可以有十几秒甚至简单的"秒",因为纪元.在任何程度上你想节省空间.
我能想到的原因是存储 1970 年 1 月 1 日 00:00:00 GMT 之前的日期和时间。
但我感受到你的痛苦。Oracle 日期/日期时间处理在 JDBC 中是痛苦的。甚至不同版本的驱动程序之间也不一致!
我不得不说,我在其他 JDBC 驱动程序(其他数据库供应商)中没有发现太多问题......