2015-04-11 4 views
1

Я использую следующий SQL запрос в asp.net к Группе три таблиц с использованием внутреннее соединение:Ошибка даты и времени запроса

SELECT tblVendorItem.Name, 
    tblEventItem.Quantity * tblEventItem.Price AS 'Sale', 
    tblEventService.ServiceDate 
    FROM tblEventService 
    INNER JOIN tblEventItem ON 
    tblEventService.EventServiceID = tblEventItem.EventServiceID 
    INNER JOIN tblVendorItem ON 
    tblEventItem.VendorItemID = tblVendorItem.VendorItemID 
    INNER JOIN tblVendor ON 
    tblVendorItem.VendorID = tblVendor.VendorID 
    WHERE (tblEventService.VendorID = 1) 
    AND (tblEventService.ServiceDate BETWEEN '20-04-2015 00:00:00' AND '23-04-2015 00:00:00') 
    GROUP BY 
    tblVendorItem.Name, tblEventItem.Quantity, tblEventItem.Price, tblEventService.ServiceDate 

Здесь VendorID и Даты являются статическими. Запрос был разобран, а на выполнение, он показывает следующее сообщение об ошибке:

Image of the Error has been attached

меня проверить тип данных в обеих, модели класса и таблицы, это показывает DateTime.

Может ли кто-нибудь сказать мне, что не так в запросе, или как эта ошибка может быть решена?

+0

в котором условие: преобразование (VARCHAR (20), tblEventService.ServiceDate, 103) между (конвертировать (VARCHAR (20), '20-04-2015 00:00: 00 ', 103) И (конвертировать (VARCHAR (20),' 23-04-2015 00: 00: 00 ', 103)) – mohan111

ответ

3

Попробуйте использовать стандартные форматы ISO для констант:

tblEventService.ServiceDate BETWEEN '2015-04-20' AND '2015-04-23' 

Кроме того, временные компоненты не нужны.

Кроме того, я бы рекомендовал использовать одиночные кавычки для констант строк и дат. Не используйте их для псевдонимов столбцов.

+0

это не работает! –

+0

Как это работает? –

+0

Это работает! Спасибо @Gordon –

0

Try добавить дату MM-DD-YYYY т.е.

> where mydatecol BETWEEN CONVERT(datetime, '04-20-2015 00:00:00') AND 
> CONVERT(datetime, '04-20-2015 00:00:00') 

Иначе вы должны применить формат, указанный для DD-MM-YYYY

> mydatecol BETWEEN CONVERT(datetime, '20-04-2015 00:00:00', 103) AND 
> CONVERT(datetime, '20-04-2015 00:00:00', 103) 
1

Если Вы хотите Time в ваш результат и , глядя на ваш запрос, кажется, вам понадобятся 3 параметра. VendorID, FromDate и ToDate. Поэтому добавьте ниже код в свой метод. VendorID вам нужно получить доступ к другому ..

string startdate = Convert.ToDateTime(txtDateTo.Text + " 00:00:00").ToString("yyyy-MM-dd" + " 00:00:00"); 
string enddate = Convert.ToDateTime(txtDateFrom.Text + " 00:00:00").ToString("yyyy-MM-dd" + " 00:00:00"); 
+0

спасибо @Dinav Это то, что я точно хочу! –

Смежные вопросы