【问题标题】:Storing unix timestamp versus string with UTC使用 UTC 存储 unix 时间戳与字符串
【发布时间】:2020-11-24 02:30:47
【问题描述】:
我今天与我的工程同事讨论了金融科技中的应用程序和数据库设计。
我们如何处理时间?我们都知道,我们需要存储以 UTC 规范化的日期时间信息。但我们的争论是我们是否应该存储 1) unix 纪元时间戳,它是我们数据库中的一个整数,例如,1596507157。这是08/04/2020 @ 2:12am UTC或2)以ISO 8601格式存储在字符串2020-08-04T02:12:37+00:00或2020-08-04T02:12:37.123456789Z中
unix 时间戳的缺点显然不是立即人类可读的。
我在这里寻找一些关于我们是否应该采用任何一种方法的设计建议。
【问题讨论】:
标签:
time
utc
epoch
iso8601
【解决方案1】:
在我看来,你应该将它存储为整数而不是字符串,原因之一是显而易见的,int 只需要 4 个字节,而 ISO 8601 的字符串需要更多。
你看到的缺点,它不会影响后端,它只是一个弥补(仅在用户视图中需要)。
【解决方案2】:
大多数数据库都有日期时间数据类型。我猜你的“纪元时间戳”是指这个日期时间或时间戳数据类型。为数据库工程师处理日期时间类型更容易(并且性能更好)。和数据库也有日期时间格式化功能。
(Oracle/MS SQL Server - 转换,MySQL - date_format,PostgreSQL - to_char ...)
在我看来,使用日期时间类型进行存储和处理,并使用格式化功能。