使用CHAR(6)表示年+月字段是一个坏主意吗?

1 mysql datetime char

我正在使用MySQL,我在表中有一个字段需要存储一年+月值.该字段不需要日,分和秒信息.我正在考虑创建该字段,CHAR(6)因为它似乎很好用>,=<比较字符串.

SELECT '201108' < '201109'
>1
Run Code Online (Sandbox Code Playgroud)

我想使用这种格式,因为我可以将相同的字符串插入Lucene索引引擎.这是一个好主意还是我应该坚持下去DATE

pax*_*blo 7

这样可以正常工作,直到您必须实现自己的代码来计算两个值之间的差异,或者计算出您将来六个月所需的价值.

使用日期类型,这是(a)的用途.如果分辨率过高,则强制执行约束,将日期始终设置为1.或者使用插入/更新触发器强制执行此操作.

然后,您可以使用DBMS供应商已编写的所有花哨的日期操作代码,代码可能会更高效,因为它将处理本机二进制类型而不是字符串.

而且你也会在这种特殊情况下节省空间,因为MySQL date类型实际上比a char(6).通常情况下,数据库决策不会给您带来空间时间上的优势(通常需要权衡),因此您应该尽可能地抓住它们.


(一)这适用于所有这些类型,例如date,timedatetime.