我有点困惑 - 我想将日期存储在JavaDB / Derby数据库中,但哪种数据类型更好用?
我可以像Long
一样存储System.currentTimeMillis()
并以BIGINT
格式将其保存到数据库。之后我可以根据需要对其进行格式化。
或者我可以使用TIMESTAMP('1962-09-23 03:23:34.234')
数据类型将其存储为TIMESTAMP
。
哪种方式更有效?
答案 0 :(得分:3)
TIMESTAMP data type的文档和implementation notes的文档都说Derby使用nanosecond解析。这表明一个64位整数,但我不知道Derby的实现。如果你真的在乎,请查看源代码。
为什么不使用TIMESTAMP?数据库的工作是管理数据,所以让它。如果没有一个非常重要的原因,你不应该试图对数据类型进行简化。对“效率”的模糊关注是微观管理数据库服务器的工作。
此外,你的问题很模糊。 “效率”是什么意思?存储空间较少?内存中使用的空间更少?索引的优点?更快的查询?写得更快?但是,再次,这些问题是premature optimization(一件坏事),直到你发现了一个特定的瓶颈。
将日期时间值存储在日期时间数据类型中是有好处的,否则该数据类型将不会添加到数据库的指令表中。按预期使用TIMESTAMP的一个重要好处是它知道如何将字符串解析为日期时间值。