Запрос SQL Server для получения количества строк, которые изменились за последние 1 день - PullRequest
1 голос
/ 07 октября 2011

Я совершенно новичок в SQL Server и понятия не имею об этом.Я попытался написать запрос, похожий на oracle, и я не вижу ожидаемых результатов.

В моей таблице есть столбец whenChanged - пример значения 2011-10-05 21: 22: 27.0

Есть 100kстрок в таблице, и мне нужен список строк, которые были изменены за последние 1 день, 1 час. blah.blah.blah.

Я написал запрос, подобный select top 10 * из имени таблицы, где при изменении> при изменении -1.

Но не вижу, чего я хочу

Ответы [ 3 ]

4 голосов
/ 07 октября 2011

Попробуйте получить все записи, которые были изменены за последний день:

select top 10 * from tablename where whenchanged > DATEADD (D, -1, GETDATE())

http://msdn.microsoft.com/en-us/library/ms186819.aspx, чтобы узнать подробности о функции DATEADD и других частях даты, которые вы можете указать

РЕДАКТИРОВАТЬ: Если вы хотите получить записи между 2 датами, то что-то вроде этого будет работать:

select * from tablename where whenchanged BETWEEN 'Date1ValueGoesHere' AND 'Date2ValueGoesHere'
2 голосов
/ 07 октября 2011

Чтобы изменить записи за последние 24 часа:

select * from tablename 
where whenchanged > DateAdd(hour, -24, GETDATE())

За последний час:

select * from tablename 
where whenchanged > DateAdd(hour, -1, GETDATE())

Чтобы изменить все сегодня, нужно немного подправить:

select * from tablename 
where whenchanged >= cast(GETDATE() as date)

Приведение исключает часть времени, поэтому у вас будет 2011-10-05 21:22:27.0 по сравнению с 2011-10-05, что совпадает с 2011-10-05 00:00:00.0 в DateTime.

0 голосов
/ 06 марта 2012

За последний час:

select * from tablename 
where order_date > DateAdd(hour, -1, GETDATE()) and order_date<=GETDATE()
...