В зависимости от вашей причины обнуления времени ...
Для меня это часто было так, чтобы я мог сравнить две даты . В этом случае вам лучше придерживаться> =, <= сравнений (избегать =, <>), если можете. Таким образом, вы можете выполнять сравнения в предложении WHERE, не теряя преимущества своего индекса.
Если вы используете SQl-Server 2008, у них теперь есть тип данных DATE (без учета времени)
Вы можете использовать некоторый творческий формат хранения - например, smallint (половина размера smalldatetime) YYDDD, где DDD - юлианская дата (каждый день года нумеруется последовательно от 1 до 365). Это меньший тип данных, действительный для>, =, <сравнений. Недостатком является необходимость преобразования внешних дат в этот формат (или наоборот) перед сравнением. </p>
Полагаю, еще одна вещь, которую стоит рассмотреть, - это предотвращение сохранения данных о времени.
Вы также можете сделать YEAR()
, MONTY()
и т. Д., Которые будут возвращать целочисленные значения. Может быть не лучшим для сравнения дат, но полезно для форматирования и т. Д.