Преобразование даты и времени в запрос выбора MS SQL с использованием SelectParameters

У меня есть такая ситуация, когда у меня есть элемент управления SqlDatasource и запрос выбора выглядит так:

SELECT col1, col2 FROM table1 WHERE colDate = @date

Источником @date является метка с текстом: 2009-05-29 12:06:00 При выполнении запроса я получаю следующую ошибку:

Ошибка преобразования при преобразовании даты и / или времени из строки символов

Я попытался использовать convert(datetime, @date), а также другое форматирование даты / времени самой метки. Каждый раз, когда я получаю ошибку.

Тем не менее, когда я запускаю запрос в студии управления, как:

    SELECT col1, col2 FROM table1 WHERE colDate = '2009-05-29 12:06:00'

Отлично работает!

У кого-нибудь есть идеи, что мне не хватает?

РЕДАКТИРОВАТЬ:

Я узнал, что @date разбирается как 05-29-2009 01:30:00 TT Я не знаю, откуда приходит TT? И я уверен, что SQL Server не сможет справиться с этим?

3 ответа

Решение

Вы можете попробовать

SELECT col1, col2 FROM table1 WHERE colDate = CONVERT(DATETIME, @date, 120)

И попробовать:

<SelectParameters>
  <asp:ControlParameter ControlID="label1" Name="date" PropertyName="Text" Type="DateTime" />
</SelectParameters>

Пожалуйста, попробуй:

SELECT col1, col2 FROM table1 WHERE colDate = convert(datetime, @date,120)

Полный список доступных форматов преобразования с учетом типа данных datetime см. В следующем электронном справочнике по SQL Server:

http://msdn.microsoft.com/en-us/library/ms187928.aspx

Обнаружил проблему, у меня была Now.ToString("ММ / дд / гггг чч: мм: сс ТТ"), которая добавила двойные Т к @date... Работает отлично сейчас!

Спасибо всем!

Другие вопросы по тегам