2015-06-18 3 views
-4

У меня есть таблица, где тип столбца «timesatmp», и мне нужно получить данные, которые находятся между двумя конкретными датами.Мой запрос sql для получения данных между двумя конкретными датами

Я пытался с этим ее не работает:

select * 
from table_name 
where column_name >= "2015-06-01 00:00:00" and column_name <= now(); 

Имя столбца имеет тип данных «метки времени» и значение магазина с точки зрения 2015-02-05 19:37:28 подобное.

+0

Тип столбца - «timesatmp»? Это опечатка? Использует ли ваш запрос правильное имя столбца? Можете ли вы оставить раздел «и column_name <= now()»? Я не понимаю, какая польза от предложения AND. Можете ли вы поделиться сообщением об ошибке? – Propulsion

+0

Это просто сработало для меня: 'где column_name между '2015-06-16 00:00:00' и now()' с литеральным типом timestamp, заключенным в одинарные или двойные кавычки. –

+0

«это не работает» - это очень смутное описание поведения, которое вы наблюдаете. Сообщение об ошибке возвращается? Не возвращаются строки? Слишком много строк возвращаются? – spencer7593

ответ

-1
select * from table_name where date(column_name) >= 'your_date' AND date(column_name) = now() 

Может быть, это поможет вашему вопросу

+0

Как это отличается от запроса OP? Какая разница. (Я не говорю, что нет никакой разницы ... Я просто говорю, что нет никаких указаний на то, почему OP захочет «попробовать это», какая проблема это решает? – spencer7593

+0

Я вас не понял. вы пытаетесь сказать? – Sivabalan

+0

Я прошу «* why *» OP попробовать это. Что такое * проблема * в запросе OP будет * решена *, используя этот запрос замены? (Этот ответ заставляет подумать, что мы просто бросаем вещи на стену, чтобы увидеть, есть ли палки. То есть мы выбрасываем решения, не понимая актуальную проблему, с которой мы обращаемся.) – spencer7593

-1

Вы хотите, чтобы выбрать данные между двумя конкретными датами, то используют два конкретных значений даты не функции NOW(), как:

select * from table_name where column_name>= "2015-06-01 00:00:00" and column_name<= "2015-06-10 23:23:23"; 

ИЛИ

select * from table_name where column_name between "2015-06-01 00:00:00" and "2015-06-10 23:23:23"; 

И если вы хотите выбрать данные с любой конкретной даты до настоящего времени, используйте yo ур запрос, как это:

select * from table_name where column_name>= "2015-06-01 00:00:00" and column_name<= now(); 

ИЛИ

select * from table_name where column_name btween "2015-06-01 00:00:00" and now(); 
0

Ваш запрос выглядит нормально (кроме печальных идентификаторов table_name и column_name.

В качестве демонстрации:

создать и заполнить таблицу:

CREATE TABLE table_name (column_name TIMESTAMP DEFAULT CURRENT_TIMESTAMP); 

INSERT INTO table_name (column_name) VALUES 
    ('2015-02-05 19:37:28') 
,('2015-06-01 00:00:00') 
,('2015-06-02 02:02:02') 

запроса:

SELECT * 
    FROM table_name 
    WHERE column_name >= "2015-06-01 00:00:00" 
    AND column_name <= NOW(); 

возвращается:

  column_name 
    ------------------- 
    2015-06-01 00:00:00 
    2015-06-02 02:02:02 

Как я заметил в комментарии к вашему вопросу:

«Это не работает» - очень неопределенное описание поведения, которое вы наблюдаете. Сообщение об ошибке возвращается? Не возвращаются строки? Слишком много строк возвращаются?

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