在mysql数据库中存储月份和年份

Posted

技术标签:

【中文标题】在mysql数据库中存储月份和年份【英文标题】:Store month and year in mysql database 【发布时间】:2012-12-07 21:02:37 【问题描述】:

我有以下日期:

$params['ExpirationMonth'];
$params['ExpirationYear'];

我需要一些关于如何在 mysql 数据库中仅存储月份和年份的建议。经过一番研究,我找到了 3 种方法。

1) 我可以使用 1st 作为日期,并且可以与月份和年份一起存储。

2) 我可以使用varchar 数据类型而不是使用date,并且只能在其中存储月份和年份。

3) 我可以将两者作为整数存储为两个单独的列。即月份和年份。

哪种方法更好?需要一些建议。谢谢。

【问题讨论】:

你打算怎么处理YY和MM?例如。 2012年到期的卡号需要查询吗?没有? @SalmanA :对,我正在做类似的事情 是信用卡吧? 【参考方案1】:

您可以使用date 列,请记住:

您可以将天部分设置为 1 该卡在指定到期日的整个月内有效。 0512 表示有效期至 2012 年 5 月 31 日。

优点:

排序很简单(与存储为 varchar 相比) 日期操作很简单(与存储为 varchar/两个整数列相比) 数据保留在一列中(与存储为两个整数列相比)

示例查询:

-- expires in 2012
WHERE expires >= '2012-01-01' AND expires < '2012-01-01' + INTERVAL 1 YEAR
-- expires in Dec 2012
WHERE expires >= '2012-12-01' AND expires < '2012-12-01' + INTERVAL 1 MONTH

【讨论】:

但是你为什么不存储最后一个有效日期2012-05-31?选择会更容易WHERE expire_date &gt;= CURRENT_DATE @SirRufo:是的,这是可能的(而且是有道理的)。【参考方案2】:

1) 我可以使用 1st 作为日期,并且可以与月份和年份一起存储。

这个选项更好,好像有任何计算或排序的需要 完成后,它将是有用的和得心应手的。

2) 我可以使用 varchar 数据类型而不是使用日期,并且只能在其中存储月份和年份。

3) 我可以将两者作为整数存储为两个单独的列。即月份和年份。

以上两个选项都很好,因为它会占用更少的空间 日期或时间戳。但是你可以用它来计算或排序。为了 计算您需要通过“str_to_date”函数将其转换为日期

我希望这会对你有所帮助。

【讨论】:

谢谢...但是您对第二个选项有何看法?【参考方案3】:

存储为 UNIX。以后突然需要加点东西,过时也没问题

【讨论】:

【参考方案4】:

信用卡到期月/年表示此卡有效期至本月/年末。

将本月最后一天作为可比较日期存储的最佳方式

STR_TO_DATE( CONCAT( '01,', @Month, ',', @Year, '%d,%m,%Y ) 
  + INTERVAL 1 MONTH 
  - INTERVAL 1 DAY

【讨论】:

【参考方案5】:

您始终可以像 YYYYDD 一样将其存储为整数: 所以对于 2021 年 5 月,您可以存储这个整数:202105

【讨论】:

以上是关于在mysql数据库中存储月份和年份的主要内容,如果未能解决你的问题,请参考以下文章

在MySql中、怎样根据年份或者月份查询数据表中的数据?

php表单mysql更新保存数据

在数据库中,如果只需要年份和月份,您会使用日期字段还是年份和月份字段?

如何在 MySql 中将月份-年份转换为月份单词?

仅根据月份和年份选择 mySQL

php按当前年份、季度、当月,查询mysql数据库并输出数组