何时使用日期时间或时间戳
我已经搜索过这个但没有明确的答案(尤其是后者)。在什么情况下应该使用日期时间或时间戳?
I've searched for this but no clear answers (especially on the latter). In what cases should you use a datetime or timestamp?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
假设您使用的是 MS SQL Server(如果您没有使用,请参阅下面的更新):
有关 MSDN 的信息
(如果您需要)针对一行存储日期/时间信息,并且不更改日期/时间,请使用 DateTime;否则,使用时间戳。
另请注意: MS SQL Server 时间戳字段既不是日期也不是时间,它们是数据更改时间相对顺序的二进制表示形式。
更新
正如您更新所说的MySQL:
引用自 MySQL 参考
更值得注意的是:
因此,如果您正在使用跨时区的应用程序,并且需要日期/时间来反映各个用户的设置,请使用时间戳。如果无论时区如何都需要一致性,请使用 Datetime
Assuming you're using MS SQL Server (Which you're not, see the Update below):
Information on MSDN
If you need to store date/time information against a row, and not have that date/time change, use DateTime; otherwise, use Timestamp.
Also Note: MS SQL Server timestamp fields are not Dates nor Times, they are binary representations of the relative sequence of when the data was changed.
Update
As you've updated to say MySQL:
Quote from MySQL Reference
More notably:
So if you are using an application across timezones, and need the date/time to reflect individual users settings, use Timestamp. If you need consistency regardless of timezone, use Datetime
请参阅我应该使用字段“日期时间”还是“时间戳”?
它全面涵盖了该主题。
编辑 -
只是总结一下 MySQL 的属性和我的使用经验
- 时间戳 -
a) 每列 4 个字节(日期时间为 8 个字节)
b) 在内部存储为整数
c) 有时区信息!
d) 所有 DATE() / DAY() / MONTH() 函数都适用于 TIMESTAMP 和 DATETIME
e) 在 MySQL 中,每个表可以有多个 TIMESTAMPS
f)表中的第一个 TIMESTAMP 会自动更新已更新...
我已将多个时间戳用于其他目的..需要节省空间(必须非常小心并牢记所有这些问题。
我的建议是,只有当你知道自己在做什么时,才使用 TIMESTAMP 来实现非时间戳目的。如果空间是一个巨大的问题(我的例子 - 15,000,000 行并且不断增长,8 个日期时间!))
See Should I use field 'datetime' or 'timestamp'?
It has a comprehensive coverage about the topic.
EDIT -
Just to summarize properties for MySQL and my experience with it-
Timestamp -
a) 4 bytes per column (compared to 8 for datetime)
b) stored internally as an integer
c) Has timezone info!
d) All the DATE() / DAY() / MONTH() functions work for both TIMESTAMP and DATETIME
e) In MySQL, you can have multiple TIMESTAMPS per table
f) first TIMESTAMP in a table is automatically updated...
I have used multiple timestamps for other purposes.. needed the space saved (had to be very careful and keep all these issues in mind.
My advice, go for TIMESTAMP for non timestamp purposes only if u know what u are doing.. and if SPACE is a huge concern (my eg - 15,000,000 rows and growing and 8 datetimes!))
我没有清楚地明白你的问题,但请参阅下面的链接。它可能会帮助您
http://www.sqlteam.com/article/timestamps -vs-日期时间-数据类型
I did not get your question clearly, but see below link. it may help you
http://www.sqlteam.com/article/timestamps-vs-datetime-data-types
DateTime
类型上,您可以使用DATE()
相关函数,而在timestamp
上则不能。时间戳
不能保存01-01-1970
之前的值。我倾向于总是选择
DateTime
。DateTime
type you can work withDATE()
related functions, whereas ontimestamp
you can't.Timestamp
can not hold values before01-01-1970
.I tend to always choose
DateTime
.需要指定数据库服务器。
一些服务器引擎会自动更新时间戳字段,因此可以用作乐观锁中的记录版本
Need to specify database server.
Some server engines will automatically update the timestamp fields, so it can be used as record version in Optimistic Locking