Вы имеете в виду "почему", очевидно.
0 - произвольная дата, которую легко написать, я думаю, 1 января 1753 года. Это не имеет значения в слишком распространенной формуле dateadd (datediff ()), ЛЮБАЯ дата / время были бы столь же хороши, если бы ее поместить как в аргументах dateadd и datediff. Но, 0 легко написать, плюс все делают то же самое, и это создает некоторый комфорт, видя это и понимая это.
Вот как работает dateadd-datediff: например, в вашем запросе
DATEADD(yy,DATEDIFF(yy,0,GETDATE()),0)
, вы хотите первый момент года getdate (). Как ты это делаешь? Вы спрашиваете, сколько лет прошло с 1 января 1753 года, чтобы получить дату (3 июля 2018 года), в результате чего получается 265. Затем вы добавляете это число (265) лет к 1 января 1753 года. Поскольку вы добавили только годы, а не месяцы, дни, часы и т. д. вы получите 01.01.2008 00: 00: 00.