MySQL 时间存储类型的问题

2017-08-08 10:22:18 +08:00
 syncher

如题,MySQL 中时间到底怎么存储最好,datetime、timestamp or int ? 为什么?

7476 次点击
所在节点    MySQL
29 条回复
lol173
2017-08-08 11:42:10 +08:00
我做过的大多数项目都是用 int,如果我主导的话,我会用 timestamp
strict
2017-08-08 12:17:33 +08:00
你存 int,到时 sqlalchemy 怎么 filter
siteshen
2017-08-08 12:56:18 +08:00
epoch 用 int 精度不够,使用 cursor 分页时很容易出问题。
一直用的 timestamp with time zone (postgres)。

@strict filter 前转成 int

Query.filter(user.created_at < datetime.now()) # timestamp
Query.filter(user.created_at < TO_INT(datetime.now())) # int
syncher
2017-08-08 12:58:17 +08:00
@siteshen @strict @lol173 感谢回复。timestamp 排序是不是没有 int 快
moult
2017-08-08 13:09:02 +08:00
如果存储时间都不用 datetime,那么 MySQL 这个字段类型设计出来干嘛用?
回归实际的话,看你需求了。脱离需求谈设计愧对扯淡。
Infernalzero
2017-08-08 13:44:24 +08:00
int or bigint
数据库一般只用最基本类型
syncher
2017-08-08 13:48:39 +08:00
@moult @Infernalzero 感谢回复,我大概找到答案了,同意 @moult 说的看需求
https://stackoverflow.com/questions/409286/should-i-use-field-datetime-or-timestamp
littleylv
2017-08-08 13:51:26 +08:00
一直都用 datetime 或 date
lshero
2017-08-08 13:55:16 +08:00
更应该考虑是否可能会面临时区转换问题
syncher
2017-08-08 13:56:14 +08:00
@littleylv 我是想如果用 datetime 是不是不便于查找,我想在该列上建立索引,这样是不是应该用 int?
LYEHIZRF
2017-08-08 14:07:49 +08:00
mysql 有很多 date 相关函数可以看看
LYEHIZRF
2017-08-08 14:09:03 +08:00
timestamp 会随时区变化
surfire91
2017-08-08 14:17:07 +08:00
偏向于 timestamp or datetime (看具体需求了),而不是 int or bigint , 因为有很多 date 函数方便使用。
littleylv
2017-08-08 14:18:43 +08:00
@syncher #10 一般时间字段没必要建索引吧。至于查找,无非就是时间段吧,直接 between
nullen
2017-08-08 14:54:15 +08:00
用 datetime
lepig
2017-08-08 14:57:31 +08:00
@moult 同意。datetime 一个好处就是查库的时候可以直接读取。不然还得复制出来转换一下。
danielmiao
2017-08-08 15:07:40 +08:00
bigint,可以支持到 ms,剩下所有的转换都在代码完成,减少数据库运算量
magicdawn
2017-08-08 15:21:00 +08:00
datetime 或者 int 都可以, timestamp 随时区变化...不好
http://magicdawn.ml/2017/05/18/mysql-timezone/
solomaster
2017-08-08 16:12:34 +08:00
@magicdawn 为什么随时区变化不好?难道不是更方便用户吗?全球各地用户看到都是当地时间。
loveCoding
2017-08-08 16:29:50 +08:00
datetime

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/381257

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX