检查到期卡

时间:2015-08-21 18:11:16

标签: sql sql-server tsql

我有一个表来存储信用卡的到期日期,下面是表格的示例模式。

ExpiryDate Varchar(10)

表中的样本数据如下: -

'08/10'
'09/11'
'08/16'
'10/17'

我怎样才能知道卡片的日期是否已过期?

5 个答案:

答案 0 :(得分:2)

我不确定您的期望是什么,但您可以使用字符串操作和子字符串来获取未过期的记录

Select *
FROM supportContacts
WHERE LEFT(ExpiryDate,2) >= MONTH(GETDATE()) AND RIGHT(ExpiryDate,2) >= RIGHT(YEAR(GETDATE()),2)

如果您想要过期的卡片列表,请使用此

Select *
FROM supportContacts
WHERE LEFT(ExpiryDate,2) < MONTH(GETDATE()) AND RIGHT(ExpiryDate,2) <= RIGHT(YEAR(GETDATE()),2)

SQL DEMO

答案 1 :(得分:0)

你想要这样的东西:

% 1000

{{1}}将年份转换为两位数格式。

答案 2 :(得分:0)

Invalid input.

你可以试试这个。

答案 3 :(得分:0)

由于这种糟糕的数据结构,您不得不将其整合在一起。这是一种方法。

with BadData as
(
    select '08/10' as SemiDate union all
    select '09/11' union all
    select '08/16' union all
    select '10/17'
)

select *
from BadData
where cast(replace(STUFF(SemiDate, 4, 0, '01-20'), '/', '-') as DATE) < CAST(getdate() as DATE)

如果您将ExpirationDate存储为日期而不是字符串,这将很简单。我当然希望你不要存储信用卡号码。

答案 4 :(得分:-1)

我想你想要这个:

 SELECT TOP 4 * 
 FROM BillingInfo
 WHERE ExpiryDate in ('08/10','09/11','08/16','10/17')

这将找到包含这些日期的4个项目。