当我需要存储时间/日期信息时,如何将其存储在数据库中最好?
如果我将它们存储为String
表示,例如获取当前时间戳(例如使用Date
)并将String
表示存储在数据库中这是一个好主意吗?
这是什么最好的做法?有什么缺点?
答案 0 :(得分:15)
最佳做法是在数据库中使用TIMESTAMP
或DATE
类型。所有主要数据库供应商都支持这些SQL标准数据类型。
除了性能和存储优化之外,您还将获得表现力,并且您将能够直接在数据库中使用大量日期时间操作函数和操作,具体取决于您使用的数据库。考虑比较日期,添加日期,添加日期间隔(例如明天是哪一天)等等......
请注意......
DATE
还包含时间信息TIMESTAMP
数据类型的方言特定版本称为DATETIME
(SQL Server的TIMESTAMP
实际上是一个VARBINARY(8)
)TIMESTAMP
和DATETIME
数据类型同义词。答案 1 :(得分:1)
最好在MySQL和T-SQL中使用timestamp数据类型。
使用时间戳可以让你对数据进行更容易的查询,添加或减少天,月,年等任何你喜欢的内容。订购也更容易。
时间戳还包含时区部分,因此如果您需要将您的网站国际化,那将更容易。
大多数语言(如PHP)也具有以您选择的格式显示时间戳的功能,因此您可以将时间戳转换为更易读的格式。
最后,javascript / jquery插件通常需要完整的时间戳来执行jQuery timeago的日期和时间计算。
答案 2 :(得分:1)
最佳实践是使用数据库供应商提供的DATE / TIMESTAMP数据类型,具有基本数据类型的好处之一是“将来您可以查询日期时间特定条件”,例如将来您可能需要到
除上述条件外,还有更多使用日期更明智的案例? TimeStamp而不是String ....