将时间戳保存在数据库中

时间:2017-09-17 17:10:44

标签: mysql json swift

我正在尝试实现一个项目,人们可以登录到他们找到个人日历的网站。在这个日历中,人们应该能够留下时间戳。由于一年有大约365天(并且每天可能超过1个时间戳),因此需要存储大量时间戳。

我需要一种方法将这些时间戳保存在某种数据库中。我是新手,我想知道使用JSON文件存储这些时间戳或使用MySQL数据库是更好的方法。

背景 - 故事: 我在一个项目中工作,在这个项目中,微控制器在给定用户的时间戳的情况下执行某些操作。用户在iOS-App上的日历中留下时间戳。所以它也必须与Swift / iOS兼容。

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

数据库有几种存储时间戳的方法。例如,数据类型TIMESTAMP或DATETIME都是存储时间戳的方法

如果您在数据库中执行此操作,则可以跨设备同步它。

要在JSON中执行此操作,我将在StackOverflow上向您推荐此问题: The "right" JSON date format

编辑:审核评论后,您很可能需要一个数据库。我在这里有一个示例,其中有一个用户表和一个可以连接的事件表,以便为每个用户获取每个事件,即使每个用户在同一个表中都有他们的所有事件。

我创建了这个因为我以前不知道数据库有什么用处,所以我来到这里,有人让我朝着正确的方向前进。数据库非常强大而且速度很快。维护每个人的JSON事件文件将是一场噩梦。我100%推荐适合您情况的数据库

使用我创建的示例数据库:http://sqlfiddle.com/#!9/523e2d/5

答案 1 :(得分:0)

如果只有少数几个用户只有几个时间戳并且没有其他时间,那么你确实可以将每个用户的数据存储在一个文本文件中。该文件可以存储JSON(如果需要),或XML,或更简单的tab-delimitedcomma-delimited文本。如果您只需要下一个时间戳,而不需要保留历史记录,那么这可能是每个用户只有一个文件的最佳方法。请注意诸如您自己的代码无意中覆盖文件或在写入期间崩溃等风险,以免文件损坏和数据丢失。

来自文本文件的升级是SQLite,以帮助您管理数据,这样您就不必进行解析工作。虽然SQLite在适当使用时是有价值的产品,但它是not meant to compete with serious database products

但是对于更多的重型需求,例如更多数据或访问数据的多个应用程序,请使用数据库。这就是它们的用途 - 以一种可以处理多个用户和多个应用程序concurrent访问的方式存储大量结构化数据。

虽然MySQL更有名,但对于保护数据至关重要的严肃的企业级数据库,我建议使用Postgres。 Postgres对data typesfunctions中的大多数数据库都有最佳的日期时间处理。 Postgres还拥有任何SQL数据库的最佳文档。

另外一对选项,都是用纯Java构建的,并且都是免​​费的/开源的,H2Derby。或商业产品,如Microsoft SQL Server或Oracle。

您还没有提供足够的详细信息来提出具体建议。此外,本网站不适用于软件推荐。为此,请访问姐妹网站:Software Recommendations Stack Exchange

如果您选择数据库产品,请务必了解日期时间处理。在这方面,数据库产品广泛地广泛,而SQL标准几乎没有触及这个主题。快速提示:以UTC格式存储值,实际上您的数据库(如Postgres)可能会调整传入值。仅应用时区以便向用户显示。避免忽略时区问题的数据类型。因此,对于标准SQL,这意味着使用TIMESTAMP WITH TIME ZONE数据类型而不是TIMESTAMP WITHOUT TIME ZONE。对于Java工作,只使用java.time类而不是麻烦的旧日期时间类,并且为了您的目的,使用InstantZonedDateTime类,但不使用缺少的LocalDateTime类任何偏移或时区。