SQL Server 2008 дата - PullRequest
       6

SQL Server 2008 дата

0 голосов
/ 10 марта 2011

Предположим, у меня есть таблица с датой

2010-04-25 
2010-05-25 
2010-06-25 
2010-07-25 
2010-08-25 
2010-09-25 
2010-10-25 
2010-11-25 
2010-12-25 
2011-25-25 
2011-02-25 
2011-03-25 

тогда, если я пройду год = 2010 и месяц = ​​10, мне нужно получить даты, которые меньше или равны прошедшему году и дате.

ИЛИ

Просто, как я могу сравнить даты независимо от ДНЯ?

Ответы [ 4 ]

2 голосов
/ 10 марта 2011

Попробуйте это

... WHERE DATEPART(yy, `field1`) = datepart(yy, `field2) AND DATEPART(m, `field1`) = datepart(m, `field2)
1 голос
/ 10 марта 2011
Declare @dates table (userdate datetime)
insert into @dates values ('2010-04-01')
insert into @dates values ('2010-05-01')
insert into @dates values ('2010-06-01')
insert into @dates values ('2010-07-01')
insert into @dates values ('2010-08-01')
insert into @dates values ('2010-09-01')
insert into @dates values ('2010-10-01')
insert into @dates values ('2010-11-01')
insert into @dates values ('2010-12-01')
insert into @dates values ('2011-01-01')
insert into @dates values ('2011-02-01')
insert into @dates values ('2011-03-01')


select * from @dates 
where userdate <  cast('2010-05-01' as datetime)
0 голосов
/ 10 марта 2011

В том же месяце у них не будет разницы в месяцах согласно DATEDIFF

...
WHERE
    DATEDIFF(month, value1, value2) = 0

В соседние месяцы:

...
WHERE
   ABS(DATEDIFF(month, value1, value2)) <= 1

Редактировать: теперь у нас есть актуальный вопрос

Просто используйте это, чтобы игнорировать день.Нет необходимости разделять месяц и год.

WHERE
   DATEDIFF(month, MyColumn, @value) < 0
0 голосов
/ 10 марта 2011

Вы можете сравнивать даты с обычными операторами сравнения. <, <=,>,> =, ==,! =

select * from table where date < '02/20/2010'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...