比如存创建时间使用 int 还是用 datetime 或 timestamp ?
整形的默认值可以是 0,datetime 或 timestamp 的默认值必须是 0000-00-00 00:00:00
整形的在程序里面比较起来更容易些,后者可能需要根据语言的具体类型进行比较,感觉不是那么方便。
大家开发中都是怎么处理的呢?
1
loading 2020-04-17 14:19:22 +08:00 via Android
如果不存在人工打开数据库修改用 int 存时间戳。
|
2
wysnylc 2020-04-17 14:19:34 +08:00 1
时间字段包含时区
如果时间使用整形存,创造时间类型干嘛? 其他的自己悟 |
3
ragnaroks 2020-04-17 15:03:38 +08:00
Int64,操作方便,过滤查询快速,而且时间戳时区无关
|
4
luckyrayyy 2020-04-17 15:04:48 +08:00
时间类型,数据库费劲吧啦的弄出来这个类型 ,肯定也做了很多优化,没特殊需求用他们推荐的最好。
|
5
hooopo 2020-04-17 15:08:48 +08:00 via Android
datetime
|
6
Erroad 2020-04-17 15:11:01 +08:00
都用过,不好说,看具体用途。之前遇到过 timestamp 写入时时区出现 Bug 导致时间出错,后来就谨慎了些
|
7
Kairyuu 2020-04-17 15:16:00 +08:00
int
|
8
purensong 2020-04-17 15:16:38 +08:00
timestamp
|
9
polythene 2020-04-17 15:23:54 +08:00
据我所知,mysql 的时间类型是没有时区的?一个时间存进去,再拿出来,时区信息就丢失了
|
10
wangyzj 2020-04-17 15:27:00 +08:00
其实我觉得用 int 和 datetime 都可以
可能更多地是习惯问题 但是我有一个问题 就是时间排序或者作为条件查询的时候 int 和 datetime 有多大区别 哪个效率更好? |
11
xpresslink 2020-04-17 15:49:14 +08:00 1
当性能和存取效率为首要考虑情况下,使用 int64,磁盘占用小,插入检查校验快,索引快。比如上亿条数据要保证插入性能的情况。
当数据量不大方便性为首要考虑情况下,用时间类型,这样数据库提供的时间函数和转换格式,提取部分等功能就可以很方便,特别是计算两个时间差的时候日期时间类型用 DATEDIFF 很省事。 |
12
1ffree 2020-04-17 15:50:54 +08:00
mysql TimeStamp 类型 CST 时区有个坑
|
13
Felldeadbird 2020-04-17 17:57:22 +08:00
一直用 int 。等到 2038 年出问题,我写的程序还在跑不跑都成问题了。
|
14
passMeBy 2020-04-17 18:02:07 +08:00
mysql 的 timestamp 能不用就不用,这相当于一个定时炸弹。
|
15
gemini767 2020-04-17 18:31:29 +08:00
正规操作都是 datetime
|
17
xcstream 2020-04-17 18:32:46 +08:00
如果要在数据库里查询的计算的话 datetime
如果只是保存和读取的话 int |
19
MeteorCat 2020-04-17 18:37:39 +08:00 via Android
我最怕 datetime,因为以前一个项目一堆 default null
|
20
bowser1701 2020-04-17 20:08:06 +08:00 via iPhone
@1ffree 那就不用 cst 呗。
|
21
daozhihun 2020-04-18 10:15:52 +08:00
看需求。
如果数据量不大,或者有一些报表需求的话,用 datetime 比较方便。 如果只是存一下,例如随便记录一下操作的时间,一般不会去看,那可以用 int |
22
Aresxue 2020-04-18 13:50:29 +08:00
有人工查看时间进行数据捞取的操作就 timestamp 和 datetime,时间要求范围不大的话就 timestamp,注意时间一定要给默认值,不然加索引的索引可能会失效,没有人工查看操作直接 int 性能最佳计算也方便
|