Как сравнить одно поле с другим, используя LIKE - PullRequest
0 голосов
/ 07 декабря 2018

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

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

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

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

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

Ответы [ 3 ]

0 голосов
/ 07 декабря 2018

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

WHERE FORMAT(DATE1, 'dd/mm/yyyy') = FORMAT(DATE2, 'dd/mm/yyyy')
0 голосов
/ 07 декабря 2018

date2 меньше, чем на 1 день позже

 where datediff(d,date1,date2) < 1 

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

 abs(datediff(d,date1,date2)) < 1 
0 голосов
/ 07 декабря 2018

Вы не можете использовать как для сравнения дат, так как для сравнения строк (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/

...