如果我在mySQL中有一个名为mySQL的列,其中包含mmyy格式的条目,那么如何选择/查询mmyy值下个月等于的记录?
例如,如果我们当前的mmyy = 0618,我想返回0718和更高的所有条目。
另外,我将如何解释下一年,如mmyy = 1218,因为返回的记录应该等于0119或更高?
有什么建议吗?
发布于 2018-06-28 06:33:10
使用STR_TO_DATE从cc_expire列生成真正的日期。我们可以通过假设每个日期都是那个月的第一个日期来做到这一点。然后,将每个信用卡记录与下个月的第一个记录进行比较。
SELECT *
FROM yourTable
WHERE
STR_TO_DATE(CONCAT('01', cc_expire), '%d%m%Y') >=
DATE_FORMAT(DATE_ADD(CURDATE(), INTERVAL 1 MONTH), '%Y-%m-01');
注:这回答了你的问题,但如果你要为信用卡的到期日期储存适当的日期,长期来说会好得多。
发布于 2018-06-28 06:44:40
可以使用CURDATE 文档、SUBSTRING 文档和CONCAT 文档构建查询。
对于第一个问题,请选择当前日期中所需的部分:
WHERE cc_expire = CONCAT(SUBSTRING(CURDATE(), 5, 2), SUBSTRING(CURDATE(), 2, 2))对于第二个问题,必须分两个步骤对当前年份(月份相关)和未来年份的日期进行拆卸和检查。
where SUBSTRING(cc_expire, 2, 2) > SUBSTRING(CURDATE(), 2, 2) # year is larger
OR (SUBSTRING(cc_expire, 2, 2) = SUBSTRING(CURDATE(), 2, 2) # year is equal
AND SUBSTRING(cc_expire, 0, 2) > SUBSTRING(CURDATE(), 5, 2))请注意,我显式地忽略了由于年份只有2个数字(即\@,99 < 05)而发生的问题。请检查一下你对这个问题的假设。
https://stackoverflow.com/questions/51076084
复制相似问题