2014-12-15 5 views
-2

Я получаю ошибку, когда пытаюсь получить результат моей хранимой процедуры. которые принимают два значения от настольных приложений C#. Я пишу эту процедуру для получения результата даты сегодняОшибка преобразования типа данных nvarchar в datetime SQL SERVER 2005

-- Add the parameters for the stored procedure here 
@StartDate datetime, 
@LastDate datetime 
AS 
BEGIN 
    -- SET NOCOUNT ON added to prevent extra result sets from 
    -- interfering with SELECT statements. 
    SET NOCOUNT ON; 

    -- Insert statements for procedure here 
    SELECT * 
    from Visitor_Table 
    where Add_Date BETWEEN @StartDate AND @LastDate 
END 

В моей базы данных даты магазина в следующем формате 14/08/2014 5:18:23 PM но когда я пытаюсь получить сегодня результат и передать значение 14/08/2014 это показывает ошибку

Ошибка преобразования данных type nvarchar to datetime

Я также попробую значение 14/08/2014 9:18:23, но проблема такая же. Пожалуйста, предложите мне, что это способ получить результат сегодня

+5

«В моих базах данных даты магазине в следующем формат» - почему вы не хранящее значения как значения 'datetime'? Это было бы гораздо лучше, чем хранить их в виде строк ... –

+0

Точно. Основная проблема здесь - злоупотребление строковым типом данных в качестве хранилища данных, а не использование правильного типа поля для начала. Исправьте это, а остальные автоматически сортируются и намного быстрее. – TomTom

ответ

2

попробовать этот

SELECT * from Visitor_Table where 
convert(varchar,Add_Date , 131) BETWEEN 
convert(varchar,@StartDate , 131) 
AND convert(varchar,@LastDate , 131) 

Bad Habits to Use Wrong DataTypes

+0

Так какой тип данных будет использоваться для хранения даты и времени –

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