Как получить записи предыдущего дня, используя TSQL? - PullRequest
6 голосов
/ 14 февраля 2012

Мне нужны все записи за последний день?

Привет

Select * from table1 where tabledate > getdate() -1 

с этим запросом мне нужно запустить именно после полуночи, чтобы получить точный результат. Мне нужно запустить его в дневное время и получить все записи за предыдущий день.

Ответы [ 5 ]

7 голосов
/ 14 февраля 2012

В SQL Server 2005 это, как правило, самый быстрый способ преобразования даты и времени в дату:

DATEADD(day, DATEDIFF(day, 0, yourDate), 0)

В вашем случае это делается только один раз, так что, как это не имеет большого значения. Но это дает следующий запрос.

Select
  *
from
  table1
where
      tabledate >= DATEADD(day, DATEDIFF(day, 0, getDate()) - 1, 0)
  AND tabledate <  DATEADD(day, DATEDIFF(day, 0, getDate()),     0)
1 голос
/ 14 февраля 2012

Проверьте эту страницу.Это отличный ресурс для расчета дат.

http://www.simple -talk.com / sql / learn-sql-server / robyn-pages-sql-server-datetime-workbench / # calculatingdates

0 голосов
/ 03 октября 2013

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

your_field = cast(dateadd(D,-1,getdate()) as DATE)
0 голосов
/ 14 февраля 2012
DECLARE @d SMALLDATETIME;
SET @d = DATEDIFF(DAY, 0, GETDATE());

SELECT <cols> FROM dbo.table1
  WHERE tabledate >= DATEADD(DAY, -1, d)
  AND tabledate < @d;
0 голосов
/ 14 февраля 2012

Другой метод заключается в использовании только DATEDIFF:

SELECT * FROM table1
WHERE DATEDIFF(DAY, tabledate, GETDATE()) = 1

Дата в 1 для дневного покрытия в любое время предыдущего дня.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...