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

时间:2012-12-20 10:53:13

标签: php mysql sql date

我有以下日期:

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

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

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

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

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

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

5 个答案:

答案 0 :(得分:2)

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

  

此选项更好,就像有任何计算或排序需要一样   要做到这一点,它将是有用和方便的。

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

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

  

对于上面两个选项都很好,因为它比较需要更少的空间   日期或时间戳。但是你可以用这个来进行calucation或orderby。对于   您需要通过“str_to_date”函数将其转换为日期的计算

我希望这会以某种方式帮助你。

答案 1 :(得分:2)

您可以使用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

答案 2 :(得分:1)

存储为UNIX。突然之间需要添加一些东西,没有任何问题可以让任何过时的东西

答案 3 :(得分:1)

信用卡到期月/年意味着此卡有效期至本月/年结束。

作为可比日期存储的最佳方式,您应该在本月的最后一天

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

答案 4 :(得分:-1)

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