2011-03-05 43 views
-1
SELECT Ticket_no, journey_date, Travels, route, sel_seat, 
     seat_opt, net_pay, name, mob, book_date, PNR_no 
FROM  a1_ticket 
WHERE (CONVERT, GETDATE(),'-') AS [DD-Mon-YYYY], journey_date) >=journey_date1 
    AND (CONVERT, GETDATE(),'-') AS [DD-Mon-YYYY], journey_date) <=journey_date2 
ORDER BY PNR_no DESC 
+1

什麼是你要完成?在我看來,有一些嚴重的語法錯誤,特別是在你嘗試使用'CONVERT'的部分附近 – madd0

回答

0

你的where子句是怪異使用。也許你想要這樣的東西,而不是。

SELECT Ticket_no, journey_date, Travels, route, sel_seat, 
     seat_opt, net_pay, name, mob, book_date, PNR_no 
FROM  a1_ticket 
WHERE journey_date between @journey_date1 and @journey_date2 
ORDER BY PNR_no DESC 
0
  1. journey_date1journey_date2真的是在相同的記錄?這將是非常奇怪的。否則,參數/變量使用@符號,例如@journey_date1
  2. CONVERT語法應該是CONVERT(<target type>, <column|expression>, <optional format>)
  3. 不要轉換表的列。相反,始終將測試參數與日期進行轉換以使用索引
  4. 與日期時間列進行比較的日期時間參數不需要轉換。要指定日期文字,爲了健壯性,始終使用YYYYMMDD,但如果可能的話,請使用來自前端的參數化查詢,甚至不需要任何格式。

它看起來像你的查詢應該是這樣的

SELECT Ticket_no, journey_date, Travels, route, sel_seat, 
     seat_opt, net_pay, name, mob, book_date, PNR_no 
FROM  a1_ticket 
WHERE journey_date >= @journey_date1 
    AND journey_date <= @journey_date2 
ORDER BY PNR_no DESC