我正在考虑使用long
数据类型来存储通过System.currentTimeMillis
生成的时间戳。
我想将此值存储为关系数据库中的BIGINT
。
这是一个好主意吗?
我的主要目标是保持DBMS独立性。所以我可以在不更改代码的情况下转移到MySQL或H2,其次使其与时区无关。
如果这是一个坏主意,那么更好的方法是什么?
答案 0 :(得分:2)
这是一个好主意,已成功用于许多项目。
您可能想到的一个问题是您是要在应用服务器上还是在数据库服务器上生成时间戳。问题是你的各种应用服务器对于它的时间会有一些不同的想法 - 如果你想在整个应用程序中保持时间顺序的一致性,你可能决定使用数据库作为时间戳的单一事实来源。这取决于您的时间戳的使用方式以及您的应用程序对时间噪声的容忍程度。
当然,似乎每个数据库供应商都有不同的功能来获得相当于System.currentTimeMillis
的功能,这明显违反了您的一个州目标。
答案 1 :(得分:2)
我不会将UTC存储为BIGINT。您将无法以任何有意义的方式使用SQL表达式。如果以ISO格式导入/导出,则TIMESTAMP列是可移植的。