信用卡MMYY格式未来和过去的日期

时间:2016-07-08 12:48:15

标签: sql

我目前正在处理信用卡日期为MM / YY格式的查询。我希望捕捉过期日期已经过去或将在接下来的30天(下个月)过去。我是SQL的新手,所以任何帮助都会非常感激。

2 个答案:

答案 0 :(得分:0)

如果卡有效,此代码将生成@check变量0,如果卡已过期,则生成1;如果卡将在一个月内过期,则生成2。

SET @exp_date = '05/13';

SELECT STR_TO_DATE(CONCAT('01/',@exp_date),'%d/%m/%Y') INTO @new_date;

SET @new_date = DATE_ADD(@new_date, INTERVAL 1 MONTH);
SET @new_date = DATE_SUB(@new_date, INTERVAL 1 DAY);

SET @future = DATE_ADD(NOW(), INTERVAL 1 MONTH);

IF @new_date > @future THEN SET @check = 0;
ELSEIF @new_date < NOW() THEN SET @check = 1;
ELSEIF @new_date > @future THEN SET @check = 2;
END IF;

这应该适用于MySQL。

答案 1 :(得分:0)

如果变量的初始大小为:MM / YY 考虑到下个月的开始,你可以使用像这样的东西来比较你的日期(12月16日样本):

DECLARE @ZZCCEXPDATE NVARCHAR(5) = '12/16' 
DECLARE @dtDate datetime = CONVERT(datetime,'01/' + @ZZCCEXPDATE, 3) 
SELECT DATEADD(mm, DATEDIFF(m,0,CONVERT(datetime,'01/' + @ZZCCEXPDATE, 3))+1,0)

所以在where子句中你可以使用:

..DATEADD(mm, DATEDIFF(m,0,CONVERT(datetime,'01/' + @ZZCCEXPDATE, 3))+1,0)