Крайне маловероятно, что вы используете LIKE
(это функция, связанная со строками) с датами. Гораздо более вероятно, что вместо этого есть функции даты.
Кроме того, если для этого запроса требуется диапазон дат, вы все равно должны избегать функций. Просто сравните столбец даты с 2 константами даты. например,
SELECT T0.[FromDate]
FROM HEM1 T0
WHERE T0.[toDate] >= '2017-01-01' and T0.[toDate] < '2018-01-01'
Это даст данные за весь год без необходимости вызова одной функции для каждой строки в таблице.
Синтаксис выше будет работать с SQL Server, но более безопасный формат для литералов даты в SQL Server:
SELECT T0.[FromDate]
FROM HEM1 T0
WHERE T0.[toDate] >= '20170101' and T0.[toDate] < '20180101'
Обратите внимание, что даты НЕ хранятся в удобочитаемом формате. Они на самом деле хранятся в виде чисел и преобразуются в строки, чтобы мы, люди, могли их прочитать. Вот почему вы не используете, как здесь. Даты по своей природе являются числовыми, но LIKE - это строки. например Возможно, вы предполагаете, что даты хранятся в «2018-01-01», поэтому «2018%» будет работать. Но это не так. Для этого вам нужно сначала преобразовать каждую дату в строку, например,
where convert(varchar(4), T0.[toDate] ,112) = '2018'-- very inefficient!
or
where format(T0.[toDate],'yyyy') = '2018' -- very inefficient!