Довольно просто объяснить это:
Если вы сохраните ее, то SQL для каждой строки придется преобразовать значение столбца даты (времени) в строку и , затем сравнить.Для таблицы с миллионами строк это будет дорогостоящей операцией, так как она должна делать это для каждой строки.
Если вы преобразуете строковый параметр в datetime, SQL может выполнить прямые сравнения с преобразованным значением в каждой строке..
Помимо вышесказанного, которое можно было бы объяснить довольно просто, если просто остановиться и подумать об этом, есть много подводных камней, таких как Larnu1 указал ;будет работать только равенство (в лучшем случае), больше, меньше, меньше и так далее.
Кроме того, сравнение даты (времени) будет намного быстрее, так как этоодиночное 8-байтовое * значение, которое можно сравнить с одной инструкцией (или очень немногими) на ЦПУ вместо того, чтобы выполнять итерацию всех символов в строке для сравнения.
Поиск вверх Sargeability ;другой аргумент для преобразования в datetime.
Лучше всего полностью избавиться от строки и ожидать, что datetime пройдет.Это позволяет вашему интерфейсу более четко передавать то, что вам нужно (а также исключает проблемы с преобразованием даты / времени, например, 6/2/2020, 2 июня или 6 февраля или ...?).
* В зависимости от того, какой тип даты и времени вы используете, это может отличаться.