大家 mysql 里存时间字段使用整形还是用时间类型?

2020-04-17 14:12:58 +08:00
 qloog

比如存创建时间使用 int 还是用 datetime 或 timestamp ?

整形的默认值可以是 0,datetime 或 timestamp 的默认值必须是 0000-00-00 00:00:00

整形的在程序里面比较起来更容易些,后者可能需要根据语言的具体类型进行比较,感觉不是那么方便。

大家开发中都是怎么处理的呢?

5188 次点击
所在节点    MySQL
23 条回复
loading
2020-04-17 14:19:22 +08:00
如果不存在人工打开数据库修改用 int 存时间戳。
wysnylc
2020-04-17 14:19:34 +08:00
时间字段包含时区
如果时间使用整形存,创造时间类型干嘛?
其他的自己悟
ragnaroks
2020-04-17 15:03:38 +08:00
Int64,操作方便,过滤查询快速,而且时间戳时区无关
luckyrayyy
2020-04-17 15:04:48 +08:00
时间类型,数据库费劲吧啦的弄出来这个类型 ,肯定也做了很多优化,没特殊需求用他们推荐的最好。
hooopo
2020-04-17 15:08:48 +08:00
datetime
Erroad
2020-04-17 15:11:01 +08:00
都用过,不好说,看具体用途。之前遇到过 timestamp 写入时时区出现 Bug 导致时间出错,后来就谨慎了些
Kairyuu
2020-04-17 15:16:00 +08:00
int
purensong
2020-04-17 15:16:38 +08:00
timestamp
polythene
2020-04-17 15:23:54 +08:00
据我所知,mysql 的时间类型是没有时区的?一个时间存进去,再拿出来,时区信息就丢失了
wangyzj
2020-04-17 15:27:00 +08:00
其实我觉得用 int 和 datetime 都可以
可能更多地是习惯问题

但是我有一个问题
就是时间排序或者作为条件查询的时候
int 和 datetime 有多大区别
哪个效率更好?
xpresslink
2020-04-17 15:49:14 +08:00
当性能和存取效率为首要考虑情况下,使用 int64,磁盘占用小,插入检查校验快,索引快。比如上亿条数据要保证插入性能的情况。

当数据量不大方便性为首要考虑情况下,用时间类型,这样数据库提供的时间函数和转换格式,提取部分等功能就可以很方便,特别是计算两个时间差的时候日期时间类型用 DATEDIFF 很省事。
1ffree
2020-04-17 15:50:54 +08:00
mysql TimeStamp 类型 CST 时区有个坑
Felldeadbird
2020-04-17 17:57:22 +08:00
一直用 int 。等到 2038 年出问题,我写的程序还在跑不跑都成问题了。
passMeBy
2020-04-17 18:02:07 +08:00
mysql 的 timestamp 能不用就不用,这相当于一个定时炸弹。
gemini767
2020-04-17 18:31:29 +08:00
正规操作都是 datetime
qloog
2020-04-17 18:32:31 +08:00
@gemini767 这个支持时区
xcstream
2020-04-17 18:32:46 +08:00
如果要在数据库里查询的计算的话 datetime
如果只是保存和读取的话 int
qloog
2020-04-17 18:33:57 +08:00
@xcstream 嗯,还是不建议在数据库里做计算操作
MeteorCat
2020-04-17 18:37:39 +08:00
我最怕 datetime,因为以前一个项目一堆 default null
bowser1701
2020-04-17 20:08:06 +08:00
@1ffree 那就不用 cst 呗。

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

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

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

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

© 2021 V2EX