当我需要存储时间/日期信息时,如何最好地存储在数据库中?
如果我将它们存储为 String
表示形式,例如获取当前时间戳(例如使用 Date
)并将 String
表示形式存储在数据库中是个好主意吗?
这方面的最佳做法是什么?有什么缺点?
最佳答案
最佳做法是在数据库中使用TIMESTAMP
或DATE
类型。所有主要数据库供应商都支持这些 SQL 标准数据类型。
除了性能和存储优化之外,您还将获得表现力,并且能够直接在数据库中使用大量日期时间操作函数和操作,具体取决于您使用的数据库。考虑比较日期、添加日期、添加日期间隔(例如明天是星期几)等...
注意...
- 如果您使用的是 Oracle,请注意
DATE
还包含时间信息 - 如果您使用的是 SQLite,请注意日期时间类型可能具有数字或文本亲和性。 IE。它们存储为数字或文本。
- 如果您使用的是 SQL Server、Sybase(ASE 和 SQL Anywhere)、SQLite,
TIMESTAMP
数据类型的方言特定版本称为DATETIME
(SQL服务器的TIMESTAMP
实际上是一个VARBINARY(8)
) - 至少 H2、HSQLDB、MySQL、Sybase SQL Anywhere 同时支持
TIMESTAMP
和DATETIME
数据类型同义词。
关于java - 如何最好地在数据库中存储时间戳或日期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9800592/