mysql 存储时间 int,关于mysql:DATETIME VS INT用于存储时间?

DateTime或INT(Unix时间戳记)或其他用于存储时间值的最佳选择是哪一种?

我认为INT可以轻松转换为许多时区,因此在性能和通用性方面会更好。 (我来自世界各地的网络访问者可以毫无困惑地看到时间)

但是,我仍然对此表示怀疑。

有什么建议么?

DATETIME可以轻松转换为时区。 实际上比int更容易-MySQL中内置了处理功能。 dev.mysql.com/doc/refman/5.7/zh-CN/如果想要随时获取整数值,只需使用UNIX_TIMESTAMP()函数即可获取它。

糟糕,我的意思是TIMESTAMP字段。 使用那些。

我不会使用INT或TIMESTAMP保存您的日期时间值。有一个" 2038年问题"!您可以使用DATETIME并长时间保存日期时间。

使用TIMESTAMP或数字列类型,您只能存储1970到2038之间的年份。使用DATETIME类型,可以保存年份从1000到9999。

不建议使用数字列类型(INT)存储日期时间信息。 MySQL(以及其他系统)提供了许多处理日期时间信息的功能。这些函数比自定义函数或计算更快,更优化:https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html

要将储值的时区转换为客户时区,可以使用CONVERT_TZ。在这种情况下,您需要知道服务器的时区和客户端的时区。要获取服务器的时区,您可以在此问题上看到一些可能。

是否32位限制是TIMESTAMP优于DATETIME的唯一缺点? 我的意思是,我们永远不知道(除非我们之前进行过检查)MySQL服务器的时区。 因此,我认为DATETIME不太通用,因为它取决于MySQL Server的时区,对吗? (要转换为用户时区,首先必须知道MySQL服务器时区)

Changing the client time zone The server interprets TIMESTAMP values

in the client’s current time zone, not its own. Clients in different

time zones should set their zone so that the server can properly

interpret TIMESTAMP values for them.

而且,如果您想获得某个特定的时区,则可以执行以下操作:

CONVERT_TZ(@dt,'US/Central','Europe/Berlin') AS Berlin,

我不会将其存储在int中,您应该查看Paul DuBois撰写的《 MySQL Cookbook》,他涵盖了其中的很多内容。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值