2013-01-18 39 views
-1

我得到一個語法錯誤與以下SQL PDO語句,你能告訴我錯誤在哪裏嗎? 謝謝!SQL語句和或之間的

SELECT * 
FROM events 
WHERE 
    (start_date BETWEEN '2013-01-14' AND '2013-01-20') 
    OR (start_date NOT < '2013-01-14' and end_date > '2013-01-20') 
+0

什麼是錯誤的文字?我的第一個猜測是日期格式無效。我的第二個是事件可能是一個保留字,可能需要轉義。但真正的低谷是你在第二次約會之後錯過了一次。 – xQbert

+0

不會start_date> ='2013-01-14'更適合,在之後或? – DigCamara

+0

正如你懷疑的那樣,「NOT <」不是有效的語法。 –

回答

2

你不能把NOT在表達式的中間,它會表達之前:

NOT start_date < '2013-01-14' 

或者使用<運營商的補碼,即>=

start_date >= '2013-01-14' 

(在NOT使用唯一的例外是與IS NULL運營商,其中兩個NOT x IS NULLx IS NOT NULL作品。)

+0

謝謝。我以前從未使用過NOT表達式,這就是爲什麼我犯了錯誤。現在它可以工作。非常感謝你(ALL)! :) – Sebsemillia

4

您在第一部分的日期之後錯過了''。

SELECT * FROM events WHERE (start_date BETWEEN '2013-01-14' AND '2013-01-20') OR (start_date NOT < '2013-01-14' and end_date > '2013-01-20') 
+0

'start_date NOT <'2013-01-14''也是可疑... –

+1

是的,你是對的。我一定在複製和粘貼過程中丟失了它。對不起,謝謝!我猜你對start_date NOT <'2013-01-14'嫌疑人也是正確的,因爲我仍然在這部分得到錯誤.. – Sebsemillia

1

你缺少蜱後二零一三年一月二十零日

SELECT * FROM events 
WHERE 
(start_date BETWEEN '2013-01-14' AND '2013-01-20') 
OR (start_date >= '2013-01-14' and end_date > '2013-01-20') 
+0

是的,你是對的。我一定在複製和粘貼過程中丟失了它。對不起,謝謝!但我仍然得到錯誤,我想這與「NOT <」有關。 – Sebsemillia