Объявление переменной даты - PullRequest
0 голосов
/ 15 мая 2019

Я хочу объявить дату начала и окончания, используя следующее:

DECLARE @start_date DATETIME = '2019-05-08'
DECLARE @end_date DATETIME = '2019-05-14'

, а затем использовать это в предложении WHERE следующим образом:

WHERE dc.Date >= @start_date AND dc.Date < @end_date

Однако яполучаю следующую ошибку:

Ошибка преобразования типа данных varchar в float.(8114) (SQLExecDirectW)

Может ли кто-нибудь помочь мне понять эту ошибку, пожалуйста?

Большое спасибо!

РЕДАКТИРОВАТЬ

Обратите внимание, что работает следующее:

WHERE dc.Date >= '2019-05-08' AND dc.Date < '2019-05-14'

РЕДАКТИРОВАТЬ

Полный запрос:

DECLARE @unit_id INT = {unit_id}
DECLARE @location_id INT = {location_id}
DECLARE @start_date DATETIME = '{start_date}'
DECLARE @end_date DATETIME = '{end_date}'

   SELECT dc.Date AS timestamps, COALESCE(ud.SalesQty, 0.0) AS quantities
     FROM DIM.DayCalendar AS dc WITH (NOLOCK)
LEFT JOIN FACT.UnitData AS ud
           ON dc.DayCalendarID = ud.DayCalendarID
          AND ud.UnitID = @unit_id
          AND ud.LocationID = @location_id
    WHERE dc.Date >= @start_date AND dc.Date < @end_date
    ORDER BY timestamps DESC

1 Ответ

1 голос
/ 15 мая 2019

Вы можете обнаружить, что ud.SalesQty - это столбец NVARCHAR.

Вы пытаетесь установить для поля quantities значение 0.0 (число с плавающей запятой), когда значение равно NULL для ud.SalesQty.

Попробуйте изменить значение 0.0 на '0.0' или альтернатива.

...