从信用卡创建日期以MMYY格式过期

时间:2011-03-10 15:47:21

标签: sql

我需要将信用卡过期字段从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()))

现在我需要下个月到期的卡片代码......

3 个答案:

答案 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())

之后的+1 啊 - 刚刚注意到你的“一年中的第一个月”问题。坚持......

您可以使用:

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日)