我有一个表来存储信用卡的到期日期,下面是表格的示例模式。
ExpiryDate Varchar(10)
表中的样本数据如下: -
'08/10'
'09/11'
'08/16'
'10/17'
我怎样才能知道卡片的日期是否已过期?
答案 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)
答案 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个项目。