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