2010-12-13 39 views
2

我有兩個字段(開始時間和結束時間)都是varchar字段(我開始之前,它的建立)正在與SQL時間

Start Time  End time 
{t '01:00:00'} {t '21:30:00'} 
{t '01:30:00'} {t '09:00:00'} 
{t '07:00:00'} {t '11:30:00'} 
{t '08:00:00'} {t '19:00:00'} 
{t '07:00:00'} {t '11:00:00'} 

我創建一個查詢只得到記錄,其中當前時間之間開始和結束時間。

例如,如果開始時間是凌晨1點,結束時間是晚上9點。現在的時間是上午11點,它將獲得該記錄。

我不知道如何用varchar字段做到這一點。

謝謝。

回答

3

如果只是在相同的格式和24小時的時間內工作。按ASCII碼...

{t '08:00:00'} <= {t '11:00:00'} <= {t '19:00:00'} 

如果存儲hh:mm:ss沒有{t 'hh:mm:ss'}

08:00:00 <= 11:00:00 <= 19:00:00 

無需強制轉換爲時間等,如果你堅持遺留代碼/數據...

編輯,根據評論

如果你想演員,然後提取真實的數據從絨毛

CAST(SUBSTRING('{t ''01:00:00''}', 5, 8) AS time) 
--OR 
CAST('01:00:00' AS time) 
+0

請告訴我們,你如何轉換/蒙上了日期時間,以這種格式 – 2010-12-13 18:00:26

+0

的字符串我結束了使用你的{t '08:00:00'} <= {t '11:00:00'} <= {t '19:00:00'}例子。 – 2010-12-13 18:10:42

0

有另一種方式來做到這一點,我會寫簡單的查詢here.Hope它有助於

SELECT * from TableName 
WHERE right(CONVERT(datetime,starttime,103),7) = '01:00AM' and 
     right(CONVERT(datetime,endtime,103),7) = '09:00PM' and 
     right(CONVERT(datetime,getdate(),103),7) = '11:00AM'