为什么要用毫秒值的形式存储日期时间?

2019-04-01 15:38:46 +08:00
 5ispy

哪位帮忙解答一下,实际工作中在哪种情况下,很有必要把时间转换成毫秒值进行存储?

比如某条数据的创建时间,查询的时候不论是程序里还是写 sql 查询还需要转换,很不方便啊,为什么还要用这种数值的存储方式?比存日期类型或者字符串处理速度快?节省空间?

求解答

谢谢!!!

13156 次点击
所在节点    程序员
64 条回复
zjyl1994
2019-04-04 01:06:09 +08:00
之前 DateTime 的时候服务器时区数据库时区等等配置搞死人,用时间戳的话前端用的时候就转换一下,轻松又方便
c4f36e5766583218
2019-04-18 15:31:03 +08:00
#58 可能说的也不是那么准确(也可能胡说瞎说 /说错了),反正大概明白意思就行。
总结就是(后面的数字代表时区,1 就是+1 时区,2 就是+2 时区):
1、mysql1 与 mysql2 时区不同
2、app1 从 mysql1 读写与 app3 从 mysql1 读写,app1 与 app3 时区不同
3、mysql1 与 app3 读写,mysql1 与 app3 时区不同
三种时区不同导致的问题。。

最近在使用:
* mysql-connector-java 8.0.15
发现 DATETIME,TIMESTAMP 的读写都会根据程序所用时区和 mysql 所用时区差值做时区上的修正
* mysql-connector-java 5.1.46
默认不会修正时间,需 useTimezone=true

ps1: 那我还加 Filter 来修正时间干嘛?我想到了,不是#58 说的原因,加这个 Filter 是用来做 sql 日志打印上的修正的。比如 app3 与 mysql1,app3 打印出来的可执行 sql 时间是按照 app3 显示的,如果直接 copy 出来拿到 mysql1-cli 上执行就会引起时区上的问题(程序上与数据库里是不会有问题的,这只是一个强迫症问题)

ps2: mariadb 可以用用感觉蛮好的
c4f36e5766583218
2019-04-18 16:28:26 +08:00
#62 一、mysql-connector-java 提供了修正时区的功能,可以解决上面说的 23 问题;但问题 1 在 mysql1 导出导入到 mysql2 下,DATETIME 类型后续的 app3 从 mysql2 读写数据会出现时区问题,TIMESTAMP 不会。 二、那个 Filter 需 mysql-connector-java 提供可配否修正时区,不然不晓得怎么写。
shanechiu
2019-07-05 12:15:29 +08:00

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

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

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

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

© 2021 V2EX