Как сравнить одно поле с другим, используя 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')