2012-05-30 2 views
0

Сценарий:Записи со вчерашнего со стола журнала

журнальный стол со значительным количеством записей (2 миллиона) с полем временной метки. Отсутствие индексов, кроме идентификатора в качестве первичного ключа, и создание индекса (или любого другого постоянного объекта) невозможно.

Я хочу выбрать все записи со вчерашнего дня.

Я знаю, что есть несколько способов сделать это, я просто хотел бы, чтобы мнение было «лучшим», и, что лучше всего, я имею в виду быстрее всего.

трюк здесь является «время» из метки времени, потому что если сейчас 11 утра, и я что-то вроде:

where modifiedDate between dateadd(dd,-1,getdate()) and getdate() 

Ill получить записи только со вчерашнего дня на 11 и получите данные сегодня

Его SQL 2005, так что нет "Date" DATATYPE

ответ

5
SELECT * 
FROM myTable 
WHERE modifiedDate >= dateadd(day,datediff(day,0,GETDATE()),-1) 
    AND modifiedDate < dateadd(day,datediff(day,0,GETDATE()),0) 

SQL Fiddle Wi th Demo

+0

спасибо большое! – Diego

+0

работал как очарование для меня! – BustedSanta

1
SELECT * 
FROM mytable 
WHERE modifiedDate >= DATEADD(dd, -1, CAST(FLOOR(CAST(GETDATE() AS FLOAT)) AS DATETIME)) 
     AND modifiedDate < CAST(FLOOR(CAST(GETDATE() AS FLOAT)) AS DATETIME)) 
+0

Спасибо Quassnoi! +1 Ваш подход работает! – Diego