[英]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日之间的StartDate
和EndDate
记录,则可以执行此操作(假设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.