2015-03-05 2 views
-1

Я не уверен, почему функция dateadd здесь не работает. Я пытаюсь вытащить только последние 24 часа с текущего времени, но я вижу часы, например, 15-18 часов сегодняшней даты. тип данных datetime, но я не уверен, что здесь происходит.Получение последних 24 часов с текущего времени в sql

select Name, location, myDate from myTable where myDate >= DATEADD(hh, -24, GETDATE()) 

когда я выполнить запрос выше результатов будет включать в себя следующее:

2015-03-05 15:00:00.000 
2015-03-05 15:30:00.000 
2015-03-05 16:00:00.000 
2015-03-05 16:30:00.000 
2015-03-05 17:00:00.000 
2015-03-05 17:30:00.000 
2015-03-05 18:00:00.000 
2015-03-05 18:30:00.000 
2015-03-05 19:00:00.000 
2015-03-05 19:30:00.000 
2015-03-05 20:00:00.000 
2015-03-05 20:30:00.000 
2015-03-05 21:00:00.000 
2015-03-05 21:30:00.000 
2015-03-05 22:00:00.000 
2015-03-05 22:30:00.000 
2015-03-05 23:00:00.000 
2015-03-05 23:30:00.000 

я ожидал, чтобы не видеть эти часы на всех.

+0

Ваш запрос ищет все строки, где 'myDate> = DATEADD (hh, -24, GETDATE())'. Это будет включать завтра, на следующей неделе и в следующем году. Это вопрос, который вы хотите решить? Обратите внимание, что предоставление примера «неправильного» вывода без соответствующих входов не очень полезно. – HABO

+1

вы отсутствуете 'и myDate <= GETDATE()' – Smog

ответ

1

Использование BETWEEN, т.е.

select Name, location, myDate from myTable where myDate between DATEADD(hh, -24, GETDATE()) and GETDATE() 

Это myDate >= DATEADD(hh, -24, GETDATE()) получает вас все записи, где MyDate больше, чем 24 часа назад, в том числе записи, которые имеют будущие даты (если они правильны, чтобы будущие даты другая история .. .)

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