繁体   English   中英

将varchar转换为日期-SQL Server

[英]converting varchar to date - SQL Server

我在SQL Server 2005的StartDate和EndDate字段中使用了varchar数据类型。此处提供了示例查询:

*我遵循的是dd / MM / yyyy格式的日期。

select * from dbo.SubDetails
where
((
DATEADD(DAY,DATEDIFF(DAY, 0, convert(datetime,StartDate,105)), 0) <= 
DATEADD(DAY,DATEDIFF(DAY, 0, convert(datetime,'16/11/2012',105)), 0)
)
AND 
(
DATEADD(DAY, DATEDIFF(DAY, 0, convert(datetime,EndDate,105)), 0) >= 
DATEADD(DAY, DATEDIFF(DAY, 0, convert(datetime,'11/9/2012',105)), 0)
))

该查询为我提供了所有记录,而与日期范围之间的记录无关。 任何帮助,将不胜感激。 谢谢

首先-如果需要,请勿将日期值存储在varchar列中-使用YYYYMMDD格式。 第二-您可以比较日期:

select *
from dbo.SubDetails
where
    convert(datetime, StartDate, 105) <= convert(datetime,'16/11/2012', 105) and
    convert(datetime, EndDate, 105) >= convert(datetime,'11/9/2012', 105)

同样,您的查询将返回与给定数据范围相交的所有数据范围(2012年9月11日-2012年11月16日)。 那是你想做的吗?

更新:如果您需要2012年11月9日至2012年11月16日之间的StartDateEndDate记录,则可以执行此操作(假设StartDate <= EndDate ):

select *
from dbo.SubDetails
where
    convert(datetime, StartDate, 105) >= convert(datetime,'09/11/2012', 105) and
    convert(datetime, EndDate, 105) <= convert(datetime,'16/11/2012', 105)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM