Лучший способ:
SELECT DATEADD(day, DATEDIFF(Day, 0, @ADate), 0)
Это связано с тем, что внутри SQL Server хранит все даты в виде двух целых чисел, первая из которых - **** количество дней *** с 1 января1900. (вторая часть - это временная часть, сохраняемая как количество секунд с полуночи. (Секунды для SmallDateTime
с или миллисекунды для DateTime
с)
Лучше использовать приведенное выше выражение, поскольку оно избегает всех преобразований, непосредственно считывая и получая доступ к этому первому целому числу во внутреннем представлении дат без необходимости выполнять какую-либо обработку ... два нуля в вышеприведенном выражении (которые представляют 1 января 1900 года), также непосредственно используются без обработки или преобразования, потому что онисоответствует внутреннему представлению сервера SQL даты 1 января 1900 года точно в том виде, в котором оно представлено (в виде целого числа) ..
* ПРИМЕЧАНИЕ. На самом деле количество границ даты (полуночи), которые вы должны пересечь, чтобы получить из одногосвидание с другим.