Следующее также будет работать для 2005:
SELECT DATEADD(dd, -7, FLOOR(CAST(GETDATE() AS FLOAT)))
Это работает, потому что SQL Server (и окна, в этом отношении) хранит дату в виде числа с плавающей запятой, причем целое число представляет количество дней01.01.1900, и часть дроби, представляющая время.Ниже короче и более соответствует тому, что я обычно использую в этой ситуации:
SELECT FLOOR(CAST(GETDATE() AS FLOAT) -7)
DATEADD полезен, если вы рассчитываете на что-то, кроме дней (то есть месяцев, лет), из-за различийколичество дней каждого месяца или года.При работе с днями часто проще добавлять или вычитать напрямую.Аналогичным образом, если вы хотите вычесть, например, два часа из даты, вы можете использовать:
SELECT CAST(GETDATE() AS FLOAT) * 2.0/24.0