Преобразование даты и времени в запрос выбора 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:
Обнаружил проблему, у меня была Now.ToString("ММ / дд / гггг чч: мм: сс ТТ"), которая добавила двойные Т к @date... Работает отлично сейчас!
Спасибо всем!