mysql 数据库存日期一般用什么类型?

2022-07-13 11:27:12 +08:00
 Ufo666

我之前用的 date ,但是在做日期减法,或者前端传来的范围时间查找,总是要去转换成时间戳,然后再转换成 date 类型,然后才能查询,所以我在想能不能直接存 int 类型的时间戳会比较好。

3932 次点击
所在节点    MySQL
27 条回复
wunonglin
2022-07-13 11:29:55 +08:00
我都存时间戳
sgq1128
2022-07-13 11:32:16 +08:00
date ,更直观一点
sunjiayao
2022-07-13 11:34:20 +08:00
时间范围查询直接给 mysql 传字符串也可以查
bruce0
2022-07-13 11:34:58 +08:00
我一般都是用 bigint, 存时间戳, 好处是可以随便比较和计算时间, 不好的地方就是直接看表不知道时间,需要手动计算
yousabuk
2022-07-13 11:38:08 +08:00
@bruce0 这个再增加一列就很好了
Ufo666
2022-07-13 11:39:49 +08:00
@wunonglin 时间戳用 int 还是 timestamp
sunjiayao
2022-07-13 11:42:02 +08:00
计算时间可以用 date_add
c1273082756
2022-07-13 11:43:31 +08:00
时间戳和 date 都存就完美解决
lix7
2022-07-13 11:43:39 +08:00
永远只存 bigint
wunonglin
2022-07-13 11:44:54 +08:00
@Ufo666 #6 bigint
R18
2022-07-13 11:45:50 +08:00
unsigned int
bruce0
2022-07-13 11:47:08 +08:00
@yousabuk 虽然可以 但是感觉有点冗余, 真的要看的话,手动复制找个工具转一下,或者查询的的时候用 sql 函数转一下
R18
2022-07-13 11:47:27 +08:00
时区真的很麻烦, 数据库有时区,程序有时区,系统还有时区。如果不存时间戳,改个时区牵扯的问题太多了。
Rache1
2022-07-13 12:41:09 +08:00
考虑时区就是用 timestamp ,或者 int 、bigint 。

如果要考虑时区,大于 1970 ,同时要考虑超过 2038 的时间,但小于 2106 ,可以考虑无符号的 int 、如果要超过 2106 年,就要考虑 bigint 了。

1970 以前的时间,也得考虑 date 、datetime 了(不考虑时区的)
wbrobot
2022-07-13 12:43:54 +08:00
使用 datetime ,存储逻辑还是 timestamp->int, 可以 SQL 里面写 date 字符串直接比较
cnoder
2022-07-13 12:45:56 +08:00
没有跨时区业务就 datetime,有就时间戳
TAFMT
2022-07-13 13:46:03 +08:00
datetime
keppelfei
2022-07-13 13:48:27 +08:00
@bruce0 有没有什么软件可以自动转一下?反正都是函数计算,如果有软件支持自动转化,那就美了。
hingbong
2022-07-13 14:23:46 +08:00
TIMESTAMP 就行, 反正互联网项目也活不到 2038 年
wtfedc
2022-07-13 14:25:09 +08:00
datetime 和 timestamp 直接比较会有什么问题吗?为什么要转时间戳再比较

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

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

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

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

© 2021 V2EX