2010-10-05 102 views
0

我想比較兩個日期和時間彼此和 我想選擇「StartTime」大於現在時間和「StartDate」大於現在日期的記錄。SQL查詢問題

但輸出不正確。提前感謝。 我tabale'records是:

StartDate  StartTime 
------------------------------- 
1389/07/11 11:04 
1389/06/23 21:17 
1389/06/23 21:32 
1389/06/23 22:10 
1389/06/26 12:34 
1389/06/27 17:29 
1389/06/27 18:13 
1389/06/27 20:27 
1389/06/28 09:41 
1389/07/18 10:46 
1389/07/05 22:00 
1389/07/15 24:00 

輸出爲: 當查詢是:(1)

SELECT  StartDate, StartTime 
FROM   Proj 
WHERE  (StartDate < '1389/07/15 ') AND (StartTime <= '20:20 ') 

StartDate  StartTime 
-------------------------------  
1389/07/11 11:04 
1389/06/26 12:34 
1389/06/28 09:41 
1389/07/18 10:46 

輸出爲: 當查詢是:(2)

SELECT  StartDate, StartTime 
FROM   Proj 
WHERE  (StartDate > '1389/07/15 ') AND (StartTime >= '20:20 ') 

StartDate  StartTime 
------------------------------- 
NULL NULL 

正確的輸出應該是:

StartDate  StartTime 
------------------------------- 
1389/07/18 10:46 

我使用波斯日期。

+0

你能給表模式?並查詢時間小於或等於20:22。 – Sascha 2010-10-05 16:58:31

+0

運營商應該是「>」我是對嗎? – bla 2010-10-05 16:59:52

+0

也許說明明顯但日期和時間是保留的sql關鍵字,你的錯誤是什麼?你有沒有嘗試過「select * from test where [date]''2010/10/05'and [time] <='20:20'」; – kd7 2010-10-05 17:00:07

回答

0

它解決了:

SELECT  StartDate, StartTime 
FROM   Proj 
WHERE  (StartTime < '20:20 ') AND (StartDate = '1389/07/15') OR 
         (StartDate > '1389/07/15') 
0

只是把你所擁有的上述和你的問題的說明,查詢應該是:

select * from test where date>'2010/10/05' and time>='20:22' 

如果你發佈你的問題和架構中,你的工作,我們會更多的細節能夠幫助你更多。

0

我想選擇記錄「時間」大於現在時間和「日期」大於現在約會

首先要獲取當前的日期時間(您現在),您可以使用SQL函數GETDATE()。 所以,如果你碰巧有一個datetime欄你可以只是做

SELECT * FROM Test WHERE LogDateTime >= GETDATE() 

這將在表測試其中LogDateTime塔內的日期時間值是在未來返回每個記錄。

現在,雖然它有點複雜,但將日期和時間拆分爲單獨的列時可以使用相同的功能。

SELECT * FROM Test 
WHERE CONVERT(datetime, LogDate + ' ' + LogTime) >= GETDATE() 

如果LOGDATE或LOGTIME是空列,你可以使用ISNULL(<columnName>, <defaultvalue>)是安全的。