1
5
您可以将年、月和日组件存储在单独的列中。这样,您只需要填充有数据的列。 |
2
2
如果只是一年,那么月份和日期默认为01,
|
3
1
或者将其作为一个未受干扰的字符串引入,并在另一个步骤中对其进行修改以使其保持一致,或者在导入过程中修改仅限年份的值,如SQLMenace建议的那样。 |
4
1
我会将值存储在DATETIME类型和另一个表示其精度的值(只需要一个整数,或者某种枚举类型)。 如果您提到您将对数据执行何种查询,那么提供更多信息会更容易。 |
5
1
像这样的
|
6
1
如果你不总是有一个完整的日期,你需要什么样的键和约束?可能存储两列数据:完整日期和年份。对于只有年份的数据,存储年份,日期为空。对于包含完整信息的项目,两者都将填充。 |
7
1
我在表中放了三列:
我总是填充年份列,只有当提供的值是日期时才填充日期列。 而且,因为您保留了提供的值,所以如果需要更改,您可以随时重新处理。 |
8
1
另一种解决方案是使用日期掩码(如IP)。将日期存储在常规的datetime字段中,并插入一个额外的smallint类型的字段或其他类型的字段,在该字段中可以指示存在哪个字段(这里甚至可以是二进制的):
如果你有
哪种解决方案更好取决于你将如何处理它。 当您想要选择那些具有完整日期的日期时,这会更好,这些日期介于某个时段(要写的更少)之间。同样,这样比较任何有7,6,4等面具的日期也更容易。它还可能占用更少的内存(date+smallint可能比int+int+int小,并且只有datetime使用64位,smallint使用的内存和int一样多,才会是相同的)。 |
9
0
我打算提出与上面@ninesided相同的解决方案。此外,还可以有一个日期字段和一个定量表示不确定性的字段。这样做的好处是能够表示“2010年9月23日或前后”之类的内容。问题是,如果你只知道年份,你必须把日期定在年中,有182.5天的不确定性(假设是非闰年),这看起来很难看。
|
10
0
+各1份 ninesided , Nikki9696 和 Jeff Siver 我的解决方案:
优势:
Sqlite 3的示例代码:
|
Michael Samuel · MYSQL在以下情况下自动创建索引 6 年前 |
Patricia Rozario · 数据库设计确保一对一关系 6 年前 |
dryhay · MySQL“多对多”关系错误 6 年前 |
L. Fox · 我在这里用的是什么样的Laravel雄辩的关系 6 年前 |
Geoff Harper · 我应该如何构建关系松散的SQL db 6 年前 |
waroxx · SQL—当多个表具有相同的列时,最好怎么做 6 年前 |
Lumpi01 · SQL 2不同的注释类型-最佳解决方案? 6 年前 |
Hayreddin Tüzel · 预约系统数据库建模[关闭] 6 年前 |