存储时间的字段用int还是用date,time?

2012-08-26 13:54:25 +08:00
 RiseAgainst
看了一些程序的数据库,有些用date,datetime类型存储时间
有些用int存储unix时间戳 这两种区别是什么?实际应用中改怎么选择?
9976 次点击
所在节点    MySQL
5 条回复
Js
2012-08-26 14:12:49 +08:00
signed int和timestamp没区别, 4字节,1970.1.1~2038.1.19

datetime和上面的区别不大,8字节, 没范围

date就是纯年月日的日期, 3字节

time就是纯时分秒的时间, 3字节
lukydd
2012-08-26 18:59:48 +08:00
没什么特殊需求就用unix时间戳吧...
AlloVince
2012-08-26 20:02:26 +08:00
datetime和date是人直接可以识别的格式,方便DBA,时间戳还需要再进行一次转换,只是存储空间占用稍小。

性能上看看这篇评测,使用转换函数进行检索时性能会有一个比较大的下滑,当然你可以选择用非MySQL的方式转换时间,这会带来额外的工作量。
http://gpshumano.blogs.dri.pt/2009/07/06/mysql-datetime-vs-timestamp-vs-int-performance-and-benchmarking-with-myisam/

我在项目中一般都会用datetime,时区统一为UTC
yoyicue
2012-08-26 20:20:46 +08:00
亦在项目中一般使用 datetime,时区统一为 UTC
一般函数 return 也是 datetime
优势:
方便和 pytz 做时区转换
方便可读的时间加减法
breestealth
2012-08-26 20:58:18 +08:00
用int型就是典型的时间换空间的做法。而且不能使用数据库提供的时间计算函数,在某些情况下比较麻烦。

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

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

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

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

© 2021 V2EX