У меня есть что-то вроде этого:
SELECt *
FROM (
SELECT prodid, date, time, tmp, rowid
FROM live_pilot_plant
WHERE date BETWEEN CONVERT(DATETIME, '3/19/2012', 101)
AND CONVERT(DATETIME, '3/31/2012', 101)
) b
WHERE b.rowid % 400 = 0
К вашему сведению: причина преобразования в предложении where заключается в том, что моя дата хранится как varchar (10), мне пришлось преобразовать ее в дату и время, чтобы получить правильный диапазон данных. (Я пробовал кучу разных вещей, и это сработало)
Мне интересно, как я могу возвращать данные, которые я хочу, каждые 4 часа в течение этих выбранных дат. У меня данные собираются примерно каждые 5 секунд (с некоторыми перерывами в данных), т.е. данные не собираются в течение 2-часового периода, а затем продолжаются с шагом в 5 секунд.
В моем примере я просто использовал модуль по модулю с моим rowid - и синтаксис работает, но, как я упоминал выше, есть некоторые периоды, когда данные не собираются, поэтому с помощью логики, например: если вы берете данные каждые 5 секунд и умножить на 4 часа, вы можете приблизительно сказать, сколько строк находится между ними, не получится.
Мой столбец времени представляет собой столбец varchar и имеет форму чч: мм: сс
Мой идеальный результат:
| prodid | date | time | tmp |
| 4 | 3/19/2012 | 10:00:00 | 2.3 |
| 7 | 3/19/2012 | 14:00:24 | 3.2 |
Как видите, я могу немного ошибиться (в секундах) - мне больше нужно приблизительное значение в терминах времени.
Заранее спасибо.