如果信用卡的有效期仅由月份和年份组成,我该如何存储它?
MySQL中的日期字段接受以下格式:yyyy-mm-dd。使用该格式时,没有日期的有效期并不是无效的。
我是否应使用varchar类型?这样做是否会阻止我进行计算,以确定卡片何时过期等信息?
如果信用卡的有效期仅由月份和年份组成,我该如何存储它?
MySQL中的日期字段接受以下格式:yyyy-mm-dd。使用该格式时,没有日期的有效期并不是无效的。
我是否应使用varchar类型?这样做是否会阻止我进行计算,以确定卡片何时过期等信息?
您可以使用LAST_DAY
函数来插入每月的最后一天。
例如:
SELECT LAST_DAY('2011-02-01')
将会得到今年的2011-02-28。通常情况下,您需要信用卡的当月最后一天,因为那是它实际有效的最后一天。
2014年1月:
2014-01-00
常见的做法是在月份和日期未知时使用00。引用自MySQL参考手册:
有些日期函数可以与“零”日期或不完整日期一起使用,例如“2001-11-00”,而其他函数则不行。提取日期部分的函数通常与不完整的日期一起工作,因此可以返回0,而您可能期望的是非零值。例如:
在
mysql> SELECT DAYOFMONTH('2001-11-00'), MONTH('2005-00-00'); -> 0, 0
DATE_FORMAT
的手册中,有关月份和日期格式说明符的范围从零开始,这是因为MySQL允许存储不完整的日期,例如“2014-00-00”。
在标准日期格式中,存储时只需使用每月的第一天。这样做有助于进行转换、比较等操作。