DateAdd (y, -1, getdate()) Не работает

Пытаюсь найти все записи, которые были за последний год (до дня/даты, не беспокоясь о времени).

Мой SQL:

dm.fromdatetime >= dateadd(y,-1,getdate())
and dm.fromdatetime <= getdate()

Не уверен, что здесь не хватает, похоже, это должно работать. Предложения?


person MISNole    schedule 10.12.2014    source источник
comment
какой тип данных fromdatetime?   -  person radar    schedule 10.12.2014
comment
Ищем данные за последние 365 дней с сегодняшнего дня (или всякий раз, когда этот скрипт запускается). И это в MS SQL 2008.   -  person MISNole    schedule 10.12.2014
comment
FromDateTime — это тип данных даты и времени.   -  person MISNole    schedule 10.12.2014


Ответы (1)


Используйте «yy», а не «y»:

dm.fromdatetime >= dateadd(yy,-1,getdate())
and dm.fromdatetime <= getdate()

Согласно книгам в Интернете, "y" – это "dayofyear", а не год.

person Philip Kelley    schedule 10.12.2014
comment
Или, что еще лучше, используйте YEAR вместо любых ярлыков. - person Lamak; 10.12.2014
comment
Предполагая, что последние 365 дней до настоящего времени, как бы вы использовали YEAR? - person Philip Kelley; 10.12.2014
comment
Истинный. Или ГГГГ. Главное, не используйте Y. - person Philip Kelley; 10.12.2014
comment
Спасибо, я думаю, мне следует использовать dateadd(day,-365,getdate()), чтобы убедиться, что он возвращается на 1 год назад. Такое ощущение, что если я использую dateadd(year,-1,getdate()), он вытянет 2013 год вместо 10 декабря 2013 года и вперед. - person MISNole; 10.12.2014
comment
@MISNole Это неправильный способ, вместо этого используйте 1 год. Что происходит, когда у вас високосный год? - person Lamak; 10.12.2014