SQL Server выдает синтаксическую ошибку
У меня есть следующий SQL для Microsoft SQL Server
SELECT *
FROM tblA
WHERE CREATION_DATE BETWEEN DATE'2015-09-12' AND DATE'2015-09-15'
Но это выдает синтаксическую ошибку:
Ошибка: неправильный синтаксис около '2015-09-12'. SQLState: S0001 ErrorCode: 102
Что случилось? Я хочу использовать буквенный код ANSI.
4 ответа
Решение
Это не то, как вы играете в MS SQL Server. Вместо этого вы должны попробовать cast
синтаксис:
SELECT *
FROM tblA
WHERE creation_date BETWEEN CAST('2015-09-12' AS DATE) AND
CAST('2015-09-15' AS DATE)
Вы можете просто использовать этот запрос, не добавляя дату:
SELECT *
FROM tblA
WHERE CREATION_DATE BETWEEN '2015-09-12' AND '2015-09-15'
SELECT *
FROM tblA
WHERE CREATION_DATE BETWEEN CAST('2015-09-12' AS DATE)
AND CAST('2015-09-15' AS DATE)
Литералы даты хитры... помимо проблемы с конвертацией (часто в зависимости от культуры вашей системы), вы должны думать о конце дня, если используете между ними!
Здесь вы найдете независимый от системы способ буквального написания дат: https://msdn.microsoft.com/en-us/library/ms187819.aspx?f=255&MSPPError=-2147217396 (см. "ODBC").
Чтобы ты мог написать
BETWEEN {d'2015-09-12'} AND {ts'2015-09-12 23:59:59'}