如何使用字符串数据类型的日期值执行日期范围?

时间:2013-04-02 15:29:22

标签: sql sql-server

我被迫使用存储为字符串的日期值。

例如,

Fieldname: claimsDate
data Type: nvarchar

值以mmddyy

的格式存储

E.G; 022413

我已设法使用以下查询将其转换为02/24/2013。

select (left(claimsdate,2)  + '/' + substring(claimsdate,3,2) + '/' + case when cast(right(claimsdate,2) as int) >= 70 then '19' else '20' end + right(claimsdate,2)) claimsdate
from tblTable 

现在的问题是我们无法使用该代码执行日期范围检查。

我尝试过这样使用它:

select (left(claimsdate,2)  + '/' + substring(claimsdate,3,2) + '/' + case when cast(right(claimsdate,2) as int) >= 70 then '19' else '20' end + right(claimsdate,2)) claimsdate
from tblTable 
where (left(claimsdate,2)  + '/' + substring(claimsdate,3,2) + '/' + case when cast(right(claimsdate,2) as int) >= 70 then '19' else '20' end + right(claimsdate,2))
between '03/01/2007' and '12/31/2007'

这并没有给我我想要的范围。它只是随意显示日期。

是否可以操作用于日期范围检查的代码?

非常感谢

1 个答案:

答案 0 :(得分:0)

在sql中使用datetime转换。此链接显示完整示例http://www.sqlusa.com/bestpractices/datetimeconversion/

select (left(claimsdate,2)  + '/' + substring(claimsdate,3,2) + '/' + case when cast(right(claimsdate,2) as int) >= 70 then '19' else '20' end + right(claimsdate,2)) claimsdate
from tblTable 
where  cast(((case when cast(right(claimsdate,2) as int) >= 70 then '19' else '20' end + right(claimsdate,2) + '-' + left(claimsdate,2)  + '-' + substring(claimsdate,3,2))) as datetime)
between @fromDate and @endDate

@fromDate和@endDate是日期时间变量

我希望这能满足您的需求