【发布时间】:2014-03-08 20:21:18
【问题描述】:
我有点困惑 - 我想将日期存储在 JavaDB/Derby 数据库中,但哪种数据类型更好用?
我可以像System.currentTimeMillis() 一样简单地存储Long 并将其以BIGINT 格式保存到数据库中。以后我可以随意格式化。
或者我可以使用TIMESTAMP 数据类型将其存储为TIMESTAMP('1962-09-23 03:23:34.234')。
哪种方式效率更高?
【问题讨论】:
-
在你的程序中什么对你来说更容易?即,这将减少您将其格式化为程序可用字符串的工作量?我不会担心数据库方面,现代数据库非常聪明,并且大部分都会自己照顾。当然,除非您认为这是您程序中的瓶颈。顺便说一句,您可能想查看 H2 数据库,它非常快,可移植,并且是用纯 Java 编写的。恕我直言,它比德比要好得多。
-
寻找一个真正的
timestamp列,这是确保只存储有效日期的最佳方式。您无法通过bigint列来确保这一点。顺便说一句:我更喜欢 HSQLDB 而不是 Derby 或 H2 -
该应用程序不需要大量的 SQL 操作,所以我选择 JavaDB 作为商业项目的免费。在这种情况下,我更喜欢
BIGINT,因为我只需要检查/计算时间差。谢谢。 -
最大的问题是。您打算如何使用存储的值?根据您的业务需求,它的范围可以从简单的数字类型一直到 UTC 时间 + 时区名称(如 CHAR / VARCHAR 列)+ 实际偏移量。