我想在关系数据库(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。
做到这一点的最佳方法是什么?
最佳答案
也许最好的方法是将这些视为时间跨度并拥有一个 effdate
和 enddate
.你可以代表任何你想要的时间跨度。一年就像“2012-01-01”和“2012-12-31”。单个日期类似于“2013-08-28”和“2013-08-28”。
这还可以让您灵活地扩展表示以处理季度或其他时间组。
关于sql - 在数据库中存储部分日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18501619/