sqlite - 在 sqlite 数据库中存储日历日

标签 sqlite date time calendar iso8601

我需要在 sqlite 数据库中存储带有日历日期(只是一天,没有时间)的项目。在列中表示日期的最佳方式是什么?朱利安天和 unix 秒是合理的选择。如果我去的单位不是几天,应该是什么时间?

更新:我知道 ISO8601 并实际使用它将日期存储为原型(prototype)的 YYYY-MM-DD 格式的字符串。但是对于各种算术,我必须在内部将其转换为某个数字,所以我更愿意存储一个数字并转换为字符串进行显示。这个数字应该是什么单位,来源是什么,如果单位比天更精确,应该使用什么时间?

最佳答案

如果您希望将日期交给外部工具或库,您应该使用它期望的任何格式。 Unix 时间似乎是数字时计的通用语,因此如果外部环境不适合您,它是一个很好的默认设置。

ISO 8601可能感兴趣。

编辑:

But for various arithmetic I have to convert it to some number internally, so I'd prefer to store a number and just convert to string for display.



啊,有道理。如果您的环境(.NET?Python?C++?)有时间处理工具,最好使用它们的 native 单元和纪元。没有理由重写所有这些日期操作函数。他们比看起来更棘手。否则,我会使用本地(公历?)日历中的天数,因为您的应用程序处于合理的时期。大方一点,当您突然需要处理比您预期更早的日期时,您不希望出现反向 Y2K 错误。

一天中的时间完全取决于口味。午夜似乎是最干净的选择(小时、分钟、秒字段中的所有零),但由于它永远不会到达用户那里,因此没有实际意义。事实上,这将是一个复活节彩蛋的好地方。

关于sqlite - 在 sqlite 数据库中存储日历日,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/121408/

相关文章:

android - 像 Google Agenda App 这样的新 TimePicker 对话框

sqlite - Visual Studio 2017 更新问题 : Unable to load DLL ‘sqlite3’ : The specified module could not be found.(HRESULT 异常:0x8007007E)

sql - 对 sql 语句中带有 yes 且 not 的值进行计数

c - 如何从 time_t 中提取小时数?

javascript - 如何将数字转换为时间?

c# - C# 中的日期计算

c# - 更新 System.Data.SQLite.dll 后 SQLite 无效的 URI

c++ - 从源代码中使用 SQL lite - 如何创建数据库文件并将一些数据放入其中?

php - 更改日期以正确显示

Ruby:迭代上个月的几天