比较 SQL Server 中的两个日期 (mm/yyyy) 字符串

大卫·雅各布森

好的,我有一个问题,我无法安静地解决,需要一些帮助。我的客户提供付款计划,如果他们经常坚持使用在他们的付款计划之前到期的 CC。我需要一种方法来为我的客户识别这些人,以便他们可以主动联系他们,但是我在比较两个 varchar 列时遇到了问题,因为我得到了误报,因为它是一个 varchar。

SELECT        
    RegID, EventID, PlayerID, AgeGroup, OrderDate, paymentDate, expDate, 
    CASE 
       WHEN LEN(CAST(DATEPART(month, DATEADD(mm, paymentTerm - 1, paymentDate)) AS varchar)) = 1 
          THEN '0' + CAST(DATEPART(month, DATEADD(mm, paymentTerm - 1, paymentDate)) AS varchar) 
          ELSE CAST(DATEPART(month, DATEADD(mm, paymentTerm - 1, paymentDate)) AS varchar) 
    END + '/' + CAST(DATEPART(year, DATEADD(mm, paymentTerm - 1, paymentDate)) AS varchar) AS lastPaymentCheck, 
    profileID, 
    DATEADD(mm, paymentTerm - 1, paymentDate) AS lastPaymentDate, paymentTerm,
    CASE 
       WHEN 
          CASE 
             WHEN LEN(CAST(DATEPART(month, DATEADD(mm, paymentTerm - 1, paymentDate)) AS varchar)) = 1 
                THEN '0' + CAST(DATEPART(month, DATEADD(mm, paymentTerm - 1, paymentDate)) AS varchar) 
                ELSE CAST(DATEPART(month, DATEADD(mm, paymentTerm - 1, paymentDate)) AS varchar) 
          END + '/' + CAST(DATEPART(year, DATEADD(mm, paymentTerm - 1, paymentDate)) AS varchar) > expDate 
          THEN 'Bad' ELSE 'Good' END AS lastPaymentCheckResult

我正在从第一个付款日期创建一个字段以获取结束付款日期 (lastPaymentCheck)。我需要将该格式化字段 (MM/YYYY) 与 expDate (MM/YYYY) 字段进行比较。我得到的数据示例:

expDate   lastPaymentCheck   lastPaymentCheckResult
------------------------------------------------------
02/2021   05/2008            BAD (Should be Good)
10/2019   11/2017            BAD (Should be Good)
01/2018   05/2018            Bad (Correct)
06/2019   05/2018            Good (Correct

我明白为什么会发生这种情况,因为它是一个 varchar 列,我需要帮助来纠正它应该做的事情。预先感谢您提供的任何帮助。

戈登·利诺夫

您真的应该将数据库中的日期存储为日期但是如果你要使用字符串,它们应该是 YYYYMM 格式。

它们很容易转换为这种格式。所以这应该做你想做的:

select (case when right(expDate, 4) + left(expDate, 2) <= right(lastPaymentCheck, 4) + left(lastPaymentCheck, 2)
             then 'Good' else 'Bad'
        end) as lastPaymentCheckResult

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

比较SQL中的两个时间字符串

来自分类Dev

将NULL与SQL Server中的字符串进行比较

来自分类Dev

比较SQL Server 2008中的字符串DateTime

来自分类Dev

sql server字符串比较

来自分类Dev

当两个值都在带有EF的SQL Server中时,如何将GUID与字符串进行比较

来自分类Dev

SQL-比较两个表中的字符串(模糊匹配...排序)

来自分类Dev

SQL Server将Smalldatetime与日期时间字符串进行比较

来自分类Dev

比较字符串,如果在SQL Server 2008中为NULL

来自分类Dev

在SQL Server中,如何比较字符串的一部分?

来自分类Dev

与SQL Server 2014中的字符串进行比较时无效的标识符

来自分类Dev

比较两个JavaScript字符串日期

来自分类Dev

比较两个日期作为字符串

来自分类Dev

如何比较两个日期字符串的值?

来自分类Dev

SQL Server中两个xml节点的数值比较

来自分类Dev

比较SQL Server函数中的两个参数

来自分类Dev

比较SQL Server函数中的两个参数

来自分类Dev

两个字符串中的SQL比较字符计数总计相同

来自分类Dev

两个字符串中的SQL比较字符计数总计相同

来自分类Dev

在 SQL Server 中逐行比较两个不同表中的两个文本列

来自分类Dev

比较Android中的两个波斯字符串

来自分类Dev

比较两个文件中的字符串

来自分类Dev

SQL Server日期格式从字符串

来自分类Dev

SQL Server 2012(T-SQL)字符串比较(用于相等性)在查询结果中给出星号

来自分类Dev

如何以自然顺序比较sql中的两个字符串

来自分类Dev

SQL字符串与<或>的比较

来自分类Dev

sql:字符串比较

来自分类Dev

比较SQL查询中的两个日期

来自分类Dev

比较两个查询PL / SQL中的日期

来自分类Dev

比较 SQL 请求中的两个日期

Related 相关文章

热门标签

归档