【问题标题】:Create a date from Credit Card expire in MMYY format以 MMYY 格式从信用卡过期创建日期
【发布时间】:2011-07-12 20:06:04
【问题描述】:

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

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

【问题讨论】:

    标签: sql


    【解决方案1】:

    您只是在寻找下个月到期的卡片?为什么不直接找出您要搜索的月份的 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】:

      肯定是这样的

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

      这样你就不用担心月结到明年的问题了。

      大编辑:只是刚刚意识到您没有日期字段 - 您有一个 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')
      

      【讨论】:

      • 是的...我认为就在我发帖的时候...因此之后的“啊..”编辑。无论如何反思都不起作用!因此进一步编辑!我最终会到达那里!
      【解决方案3】:

      当然,在客户端将 CC 的 MMYY 格式转换为 SQL Server 的首选日期格式会更容易。这样您就可以将其存储在正常的日期字段中,然后您可以从中执行 normal date math:

      DATEADD(month, 1, GETDATE()) 
      

      将正确返回下个月的等效日期(并进行调整以使 1 月 31 日 + 1 个月 = 2 月 28 日)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-08-21
        • 1970-01-01
        • 2015-06-05
        • 2014-07-25
        • 1970-01-01
        相关资源
        最近更新 更多