首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从mySQL中的mmyy列中选择所有到期的信用卡日期

问从mySQL中的mmyy列中选择所有到期的信用卡日期
EN

Stack Overflow用户
提问于 2018-06-28 06:30:21
回答 2查看 434关注 0票数 3

如果我在mySQL中有一个名为mySQL的列,其中包含mmyy格式的条目,那么如何选择/查询mmyy值下个月等于的记录?

例如,如果我们当前的mmyy = 0618,我想返回0718和更高的所有条目。

另外,我将如何解释下一年,如mmyy = 1218,因为返回的记录应该等于0119或更高?

有什么建议吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-06-28 06:33:10

使用STR_TO_DATE从cc_expire列生成真正的日期。我们可以通过假设每个日期都是那个月的第一个日期来做到这一点。然后,将每个信用卡记录与下个月的第一个记录进行比较。

代码语言:javascript
复制
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');

​

演示

​

注:这回答了你的问题,但如果你要为信用卡的到期日期储存适当的日期,长期来说会好得多。

票数 4
EN

Stack Overflow用户

发布于 2018-06-28 06:44:40

可以使用CURDATE 文档、SUBSTRING 文档和CONCAT 文档构建查询。

对于第一个问题,请选择当前日期中所需的部分:

代码语言:javascript
复制
WHERE cc_expire = CONCAT(SUBSTRING(CURDATE(), 5, 2), SUBSTRING(CURDATE(), 2, 2))

对于第二个问题,必须分两个步骤对当前年份(月份相关)和未来年份的日期进行拆卸和检查。

代码语言:javascript
复制
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)而发生的问题。请检查一下你对这个问题的假设。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51076084

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档