存储2014-2015字符串的最佳数据类型是什么?

时间:2015-03-23 12:00:04

标签: mysql database types

在我的学生数据库中,我想存储例如每年的4月开始并且在下一年的3月结束的学校会议。我希望将会话年存储为2014-2015,2015-2016等。我不确定哪种数据类型最适合存储此类字符串。请帮忙并提出建议。

2 个答案:

答案 0 :(得分:2)

  

存储2014-2015字符串的最佳数据类型是什么?

这取决于你想要做什么。因此,为了提供答案,我们必须对此做出一些假设。

如果您 存储字符串" 2014-2015"为了向人类观众识别会话,您可以简单地对待" 2014-2015"作为会话的任意标签,与调用会话"会话3"或" Frank"无异。因此,将其保存为具有适当长度的VARCHAR就足够了。

但是,如果您希望系统具有与" 2014-2015"所代表的日期范围相关的逻辑,即要弄清楚如果" 2014-2015"会议在" 2015-2016"之前,之后或重叠进行。会话,将其保存为字符串数据突然是一个非常糟糕的主意。

由于您可能希望满足这些要求的两个是合理的,我建议将数据分开:有一个字符串字段,用于将会话标识为" 2014-2015& #34;并有两个DATE字段,用于标识会话的开始和结束日期。这使您可以在正确的上下文中使用正确的数据类型,而不必强迫您根据需要编写大量逻辑来转换类型。

答案 1 :(得分:1)

对于数百行,只需CHAR(9) CHARACTER SET ascii

对于数百万行,请考虑以下几点:

  • ENUM('2014-2015', '2015-2016', ...) - 1个字节
  • TINYINT UNSIGNED(1个字节)和JOIN到包含字符串的表格
  • YEAR(2个字节),但随后有SELECTs'构造' ' 2014 - 2015年'来自' 2015'。