Устаревший тип данных datetime
сохраняется как два 32-битных целых числа, соединенных вместе.
Одно целое число - это смещение в днях от базовой даты 1 января 1900 года, другое целое число - это число тиков для компонента времени.
Точно так же SQL Сервер долго разрешал приводить между типами чисел c и датой / временем, которые соответствуют этой схеме. Целое число 0
приводится, например, к понедельнику 1900-01-01 и 6
к воскресенью 1900-01-07.
Когда вы звоните DATEDIFF
и передаете целое число как одно из последних 2 параметры, которые он неявным образом приводится к DATETIME
, аналогичны DATEDIFF(wk, {d '1900-01-07'}, date_under_test}
.
Хотя вывод этого выражения сам по себе, вероятно, не интересен, его можно использовать для группировки значений, относящихся к той же неделе ( начиная с воскресенья) вместе или в сочетании с DATEADD
, чтобы добавить это количество недель плюс одну обратно к дате привязки, чтобы в следующее воскресенье набрать date_under_test
или аналогичное значение.