sql - 在数据库中存储部分日期

标签 sql database-design schema

我想在关系数据库(MySQL、PostgreSQL 等)中存储部分日期。例如,输入可能只是年份(2013);年月(2013-08);或年、月、日 (2013-08-29)。我不能只使用普通的 DATE 类型,因为年份将扩展到 2013-01-01,这与年、月和日无法区分。

我曾想过将日期分成三个单独的字段(年、月和日作为整数),但我在 DBS 中丢失了所有日期细节,必须管理更多索引。

我的另一个想法是将它存储为 DATE 并有另一列说明日期的精确度。例如,'2013-08-01' 和 'month' 表示日期只精确到月份 (2013-08)。 '2013-08-01' 和 'day' 表示日期完全是 2013-08-01。

做到这一点的最佳方法是什么?

最佳答案

也许最好的方法是将这些视为时间跨度并拥有一个 effdateenddate .你可以代表任何你想要的时间跨度。一年就像“2012-01-01”和“2012-12-31”。单个日期类似于“2013-08-28”和“2013-08-28”。

这还可以让您灵活地扩展表示以处理季度或其他时间组。

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

相关文章:

java - 更新 SQLite 数据库

mysql - 连接数百万行表的性能

mysql - 如何在MySQL中实现父类(super class)/子类结构?

database - Android中使用的SQLite版本?

json - 将具有不同模式的 json 加载到 PIG 中

curl - 如何通过curl查询删除SOLR索引数据?

mysql - 这个 MySQL 查询有什么问题? INNER_JOIN WHERE 子句的语法正确吗?

MySQL - 长文本字段的词频计数

mysql - 在 MySQL 中使用联接从多个表中选择数据

PostgreSQL:对可选插件执行 1:1