2013-10-04 5 views

ответ

1
select * from table 
where dateB >= dateadd(dd,-7, dateA) 
+0

Почему 'dd' вместо того, чтобы просто изложив' DAY' и быть яснее? Пожалуйста, прочитайте: http://sqlblog.com/blogs/aaron_bertrand/archive/2011/09/20/bad-habits-to-kick-using-shorthand-with-date-time-operations.aspx –

+0

@Aaron, вы правильно. – singsuyash

0

ВЫБОР * FROM TABLE WHERE [dateB])> = convert (datetime, [dateA] - 7)

Вы были так близки

+0

Я рекомендую использовать сокращенное название 'datetime-n' - это не работает с новыми типами, такими как' DATE' и 'DATETIME2'. http://sqlblog.com/blogs/aaron_bertrand/archive/2011/09/20/bad-habits-to-kick-using-shorthand-with-date-time-operations.aspx –

0
IF you need past 7 days activity then you need take difference of date in that column from today i.e GETDATE() it will be something like this...... 

WHERE (DATEDIFF(DAY, GETDATE(), dateA) <= 0 AND DATEDIFF(DAY, GETDATE(), dateA) > -7) 
     AND (DATEDIFF(DAY, GETDATE(), dateB) <= 0 AND DATEDIFF(DAY, GETDATE(), dateB) > -7) 
+0

чтобы получать значения за последние 7 дней должны иметь разницу в расписании с сегодняшнего дня, ColumnA и ColumnB могут иметь любые значения, если столбец, в котором вы принимаете разницу, не имеет сегодняшней даты, у вас не будет данных за последние 7 дней. –

Смежные вопросы