В чем проблема с этим запросом SELECT? - PullRequest
0 голосов
/ 05 марта 2011
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

Ответы [ 3 ]

0 голосов
/ 05 марта 2011

Ваш пункт, где странно.Возможно, вы хотите что-то подобное вместо этого.

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 голосов
/ 05 марта 2011
  1. Действительно ли journey_date1 и journey_date2 в одной записи?Это было бы очень странно.В противном случае параметры / переменные используют символ @, например, @journey_date1
  2. CONVERT синтаксис должен быть CONVERT(<target type>, <column|expression>, <optional format>)
  3. Не преобразовывать столбцы таблицы.Вместо этого всегда конвертируйте тестируемые параметры в дату, чтобы использовать индексы
  4. Нет необходимости в преобразовании параметров datetime по сравнению со столбцами datetime.Чтобы указать литералы даты, для надежности всегда используйте 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
0 голосов
/ 05 марта 2011

Вы не можете использовать AS в предложении where

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...