2016-10-07 4 views
0

Я вызываю хранимую процедуру из другой хранимой процедуры. Мне нужно передать параметр @StartDate и @enddate:Ошибка SQL datetime вне диапазона

Create procedure GetALL 
    (@Startdate datetime, 
    @EndDate datetime) 
as 
    insert into #test 
     Exec [getCustomerAll] @Startdate, @EndDate 

Я получаю сообщение об ошибке

Преобразование типа VARCHAR данных к типу DateTime данные, приведенные в стоимости из-за границы диапазона

Я не могу изменить хранимую процедуру getCustomerAll, как написано клиентом третьей стороны

Параметры для GetCustomerAll, @Startdate и @EndDate все типа datetime.

Я звоню GetALL хранимую процедуру от C# asp.net.

exec GetALL '15 MAY 2016','15 MAY 2016' . 

Вопрос встречающийся на вызове GetCustomer все

Create PROCEDURE [dbo].[getCustomerAll] 
    -- Add the parameters for the stored procedure here 
    @DateFrom Datetime, 
    @DateTo Datetime, 

AS 
BEGIN 


    SELECT * from Customers 

    WHERE creation_date BETWEEN CONVERT(VARCHAR(10), @DateFrom, 103) AND CONVERT(VARCHAR(10), @DateTo, 103) 

Любая помощь приветствуется

+0

Можете ли вы показать свой C#? – Hambone

+0

Не могли бы вы поделиться кодом «getCustomerAll»? –

+0

Итак, вы в основном говорите, что есть проблема преобразования varchar, но вы не видите код ошибки? Что мы можем сделать? Вы вызываете свой SP, отправляя такую ​​строку? Или параметризованный звонок? Не можете ли вы поделиться чем-либо еще об исключении, которое вы получаете? Возникает ли проблема при вызове 'GetALL' или при вызове' GetCustomerAll'? – Andrew

ответ

0

Вызов процедуры с использованием универсального формата даты:

exec GetALL '20160515','20160515' 
+0

@Akshay Bhatt получает ту же ошибку – user1554650

+1

Попробуйте exec GetALL '2016-05-15', '2016-05-15 ' –

+0

Не нужно применять литье. Формат даты и времени уже находится в формате YYYYMMDD. Кастинг - это дополнительные накладные расходы. –

0

попробуйте вызвать GETALL хранимую процедуру в следующем путь

declare @Startdate as datetime,@EndDate as datetime; 
set @Startdate=convert(datetime, '15 MAY 2016',106); 
set @EndDate=convert(datetime, '15 MAY 2016',106); 
exec GetALL @Startdate,@EndDate; 
0

Creation_Date - это дата-столбец?

Почему вы конвертируете @DateFrom & @DateTo в varchar (10) с помощью convert()?

WHERE creation_date BETWEEN 
     CONVERT(VARCHAR(10), @DateFrom, 103) 
     AND 
     CONVERT(VARCHAR(10), @DateTo, 103) 
+0

, что хранимая процедура не написана мной. Это существующая хранимая процедура в системе. Я не могу изменить его – user1554650

+0

, но вы можете выполнить инструкцию SQL Select с фильтрами ... Проверьте, не дает ли она каких-либо ошибок? – Aditya

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