好的,我有一个问题,我无法安静地解决,需要一些帮助。我的客户提供付款计划,如果他们经常坚持使用在他们的付款计划之前到期的 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] 删除。
我来说两句