我需要将信用卡过期字段从MMYY转换为我可以在MS SQL查询中使用的日期字段,以便我可以计算信用卡将来到期的时间。基本上,我需要从MMYY到MM / DD / YYYY,那里的日期部分可能只是'01'(本月的第一天)。
我正在寻找下个月从数据库到期的信用卡。我遇到的问题是下个月是明年的第一个月。
以下是我用于确定过期卡的代码:
(CAST(SUBSTRING(CCExpire,3,2) as int) + 2000 < YEAR(GETDATE()))
or
(
(CAST(SUBSTRING(CCExpire,3,2) as int) + 2000 = YEAR(GETDATE()))
AND
(CAST(SUBSTRING(CCExpire,1,2) as int) < MONTH(GETDATE()))
)
这是本月到期的卡片代码:
(CAST(SUBSTRING(CCExpire,3,2) as int) + 2000 = YEAR(GETDATE()))
AND
(CAST(SUBSTRING(CCExpire,1,2) as int) = MONTH(GETDATE()))
现在我需要下个月到期的卡片代码......
答案 0 :(得分:2)
当然只是
(CAST(SUBSTRING(CCExpire,3,2) as int) + 2000 = YEAR(GETDATE()))
AND
(CAST(SUBSTRING(CCExpire,1,2) as int) = MONTH(GETDATE())+1)
请注意MONTH(GETDATE())
您可以使用:
CCExpire < DATEADD(mm,GETDATE(),1) AND CCExpire > GETDATE()
这样你就不必担心明年的问题。
Big Edit:只是意识到你没有日期字段 - 你有一个MMDD字段。所以我认为,首先建立信用卡日期,可能会进入一个参数,以便更容易看到最新情况,使用DATEADD然后将其与上面的代码一起使用来评估。
您可以使用以下方式转换您的MMYY日期:
print convert(datetime, str(2000+'10')+'06'+'01')
在这个例子中,10是YY,06是MM,所以你可以使用类似的东西:
print CONVERT(datetime, str(2000+SUBSTRING(CCExpire,3,2))+SUBSTRING(CCExpire,1,2)+'01')
答案 1 :(得分:2)
您只是在寻找下个月到期的卡?为什么不弄清楚你正在搜索的月份的MMYY字符串,然后在你的谓词中使用它:
WHERE CCExpire = (RIGHT('00' + CAST(MONTH(DATEADD(mm, 1, GETDATE())) AS VARCHAR), 2)
+ RIGHT(CAST(YEAR(DATEADD(mm, 1, GETDATE())) AS VARCHAR), 2))
答案 2 :(得分:0)
当然,将CC的MMYY格式转换为SQL服务器的首选日期格式客户端会更容易。这样你就可以将它存储在一个普通的日期字段中,然后你就可以normal date math了:
DATEADD(month, 1, GETDATE())
会在下个月正确返回等效日期(并调整为1月31日+ 1月= 2月28日)