Как сравнить одно поле с другим, используя LIKE

Я хочу, чтобы что-то вроде следующего:

SELECT * FROM TABLE1
WHERE DATE1 LIKE DATE2 + '%'

Однако, когда я пытаюсь это сделать, я получаю следующую ошибку:

"5407: недопустимая операция для даты или времени"

Я работаю в Terdata SQL Assistant

3 ответа

Вы не можете использовать как для сравнения дат, так как для сравнения строк (varchar), тогда вы можете привести эти даты к varchar, или лучшим способом привести обе даты к одному и тому же формату, например:

SELECT * FROM TABLE1
WHERE convert(varchar, DATE1, 103) = convert(varchar, DATE2, 103)

Таким образом приводятся даты в формате: ДД / ММ / ГГГГ

Если вы хотите использовать другие форматы, я предоставлю вам ссылку, которая объясняет больше типов: https://www.mssqltips.com/sqlservertip/1145/date-and-time-conversions-using-sql-server/

date2 меньше чем через 1 день

 where datediff(d,date1,date2) < 1 

Поскольку вы используете как... вы могли бы иметь в виду в течение дня до или после.

 abs(datediff(d,date1,date2)) < 1 

Вы можете потенциально отформатировать даты таким же образом, чтобы сравнить их.

WHERE FORMAT(DATE1, 'dd/mm/yyyy') = FORMAT(DATE2, 'dd/mm/yyyy')
Другие вопросы по тегам