2015-03-31 3 views
3

enter image description hereenter image description here В основном у меня есть база данных, которая извлекает данные каждую минуту дня. Это произошло за последние три года в моей компании. Я ищу запрос, который будет вытаскивать все записи каждый день в 11:00:00. У меня есть столбец timestamp и пробовал следующее, но он не генерирует никаких результатов. Формат Timestamp выглядит следующим образом: 2011-10-13 16: 59: 00.000.Выбор записи в зависимости от последнего часа дня

Select * из WaterUsage Где Отметка как '% 23: 00: 00%'

спасибо.

UPDATE: Это следующая формула, кажется, работает, но оставляет за несколько дней ... Не знаю, почему ..

с КТР в (

выберите *, row_number() над (раздел по DATEDIFF (д, 0, timestmp) упорядочить по алфавиту timestmp) в виде р-н от WaterUsage ) выберите * от КТР
, где гп = 1

UPDATE: Это также работает, если я должен получать годовые результаты в течение определенного периода времени. Select * от WaterUsage где TimeStmp> «2011» и TimeStmp < «2012»

+0

Вы можете поделиться образцом таблицы? – 4EACH

+0

@ 4EACH просто хотел знать то же самое. На самом деле не уверены в типе данных Timestamp. – laubed

+0

Мне нужна еще одна точка репутации для отправки изображений. У меня все это на экране. – riceformvp

ответ

-1

Гадать, что ваш столбец временной метки столбец VARCHAR можно сделать

Select * from WaterUsage Where TimeStmp like '23:%' 

Выражение Timestamp like '23:%' оценивает только справедливо, если метка времени строка начинается с '23: '. Поэтому каждая временная метка между 23:00:00 и 23:59:59 соответствовала бы ей.

Внимание (только применяется, если столбец временной метки хранит только время и без даты) Dont положить% перед 23, потому что тогда выражение будет также соответствовать 03:23:50 (просто пример)

** Если есть ведущая дата в столбце временной метки, то правильный запрос будет

Select * from WaterUsage Where TimeStmp like '% 23:%' 

Просто, чтобы убедиться, что вы включили пробел между% и 23

+0

Правильно. Я просто пытаюсь сгенерировать результаты в 11:59:00 – riceformvp

+0

Правильный ответ заключается в том, чтобы поставить пробел в начале, потому что отметка времени - это дата + время. ** Выберите * из WaterUsage Где отметка времени, например «% 23:%» ** – 4EACH

+0

Не знаю о формат отметки времени Да, с датой в качестве префикса вы совершенно правы. Но комментарий к вашему ответу показывает, что столбец Timestamp состоит только из времени – laubed

0

Co Правильный ответ состоит в том, чтобы поместить пустое пространство в начале, чтобы создать временную метку Date + Time.

Select * from WaterUsage Where TimeStmp like '% 23:%'` 

Другой способ:

Select * from WaterUsage Where UNIX_TIMESTAMP(TimeStmp)%86400 > 82800 

Вы должны проверить производительность для этих двух вариантов.

+0

Это выполняется, но не дайте любые результаты. – riceformvp

+0

Это делает мой ответ более правильным, потому что столбец Timestamp не хранит даты – laubed

+0

Оба они не дают никаких результатов? – 4EACH

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