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

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

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

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

求解答

谢谢!!!

12820 次点击
所在节点    程序员
64 条回复
saulshao
2019-04-01 15:42:38 +08:00
我印象中,这个是从 Unix 学来的。Unix 里最早所有的时间都是这么存储的。后来关系数据库就也这么干。
计算机最早只认识整数,其他的数据类型都是从整数扩展来的。日期时间也不例外。我怀疑即使是现代关系数据库,这个日期时间格式在后台也是用毫秒存储的。
搞数据库软件开发的能不能出来详细解释一下。
codebear01
2019-04-01 15:42:55 +08:00
节省空间吧 我是存成 datetime 类型
opengps
2019-04-01 15:43:09 +08:00
时间戳,某些系统下获取很方便,存储省空间,大小比较筛选范围也比较方便。只是展示时候需要转化下
banker
2019-04-01 15:46:13 +08:00
为什么不呢?毫秒可以转换为秒 /分钟 /小时 /天,反之则转不回来
毫秒有一定的区分度,1 秒钟可以有几万笔交易
Septembers
2019-04-01 15:46:15 +08:00
unix timestamp 会带来很多额外的问题
1. 闰秒
2. 会与 UT1 存在偏差
3. 多时区表达问题
hihipp
2019-04-01 15:46:23 +08:00
rrfeng
2019-04-01 15:48:28 +08:00
@Septembers

使用 timestamp 恰恰是避免这些问题的最佳实践!!
murmur
2019-04-01 15:49:42 +08:00
省事 直接 new 一下就是对应的时间封装
Septembers
2019-04-01 15:52:00 +08:00
@rrfeng timestamp 是造成这些问题的原因
ISO 8601 方式描述时间才能解决这个问题
love
2019-04-01 16:39:43 +08:00
@Septembers timestamp 是怎么产生闰秒问题能说说吗
geelaw
2019-04-01 16:45:50 +08:00
@love #10 需要许多额外数据才能把时间戳转换为挂钟时间

在 .NET 里面默认比毫秒还要精确,是 tick ( 100 纳秒),数据库内部存储时间可能是存储从某刻经难过的 tick 数,也可能是挂钟时间。
rrfeng
2019-04-01 16:45:57 +08:00
@Septembers
ISO 8601 只是一个把 timestamp 转换成易读格式的标准而已。
love
2019-04-01 16:51:29 +08:00
@geelaw 需要什么额外数据?
danielmiao
2019-04-01 16:52:46 +08:00
mysql 的时间格式精度只能到秒级(至少是 5.5 以前是这样的),如果需要记录毫秒级,只能使用 Unix timestamp
huangdayu
2019-04-01 16:54:19 +08:00
不是因为时间格式转换方便吗?
ksc010
2019-04-01 17:15:02 +08:00
搜了下 貌似 时间戳转换为时间字符串 没有考虑闰秒的情况
DOLLOR
2019-04-01 17:19:48 +08:00
你想计算两个时间的差,直接减就可以了
leo108
2019-04-01 17:21:57 +08:00
看来楼主是没有受过时区问题的毒打
webdisk
2019-04-01 17:26:59 +08:00
@Septembers 你完全说反了。
@ksc010 有个软件包会按照你说的这些情况进行更新一些数据, 最新版本是 tzdata2019a.tar.gz
zjsxwc
2019-04-01 17:30:47 +08:00
时区问题,我怎么知道你给的字符串日期是哪个时区

方便计算时间区间,直接数字加减比较就行

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

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

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

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

© 2021 V2EX