簡體   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