在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
列,请记住:
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 >= 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数据库中存储月份和年份的主要内容,如果未能解决你的问题,请参考以下文章