Преобразование типа данных nvarchar в тип данных datetime

У меня есть запрос, как показано ниже:

select 
  ...
 convert(VARCHAR(10), DATEADD(day,t.DAYNUMBER,t.START_DATE), 103) AS END_DATE
 where END_DATE >=  GETDATE()

Он отображает следующую ошибку:

Преобразование типа данных nvarchar в тип данных datetime привело к получению значения вне допустимого диапазона.

t.DAYNUMBER происходит от:

select max([day]) from TOUR_SPECIFIKA 

где день внутр. И t.START_DATE — это дата. Я не знаю, почему он показывает nvarchar по ошибке.


person Laureta Xhaferraj    schedule 11.04.2015    source источник
comment
Какое значение вы пытаетесь конвертировать здесь??   -  person marc_s    schedule 11.04.2015
comment
t.start_date - дата   -  person Laureta Xhaferraj    schedule 11.04.2015
comment
Судя по синтаксису, вы используете SQL Server. Вы также должны пометить вопрос версией.   -  person Gordon Linoff    schedule 11.04.2015
comment
@marc_s T.START_DATE — это тип даты, а число дней — целое число. что происходит не так?   -  person Laureta Xhaferraj    schedule 11.04.2015


Ответы (1)


Если у вас есть этот код:

select ...,
       convert(VARCHAR(10), DATEADD(day, t.DAYNUMBER, t.START_DATE), 103) AS END_DATE
where END_DATE >= GETDATE()

И вы получаете эту конкретную ошибку, тогда либо t.START_DATE, либо t.END_DATE являются nvarchar(), а не каким-либо типом данных даты/времени. Один из этих столбцов содержит недопустимую дату.

Обратите внимание, что ссылка в предложении where относится к столбцу в одной из таблиц. Это не ссылка на псевдоним в файле SELECT.

person Gordon Linoff    schedule 11.04.2015
comment
@LauretaXhaferraj . . . Если вы хотите получить ответ на вопрос, отредактируйте свой вопрос и объясните, какое значение равно nvarchar(). Отметьте вопрос соответствующей версией SQL Server (как я уже просил в комментарии). Примерные данные также будут полезны. - person Gordon Linoff; 11.04.2015