2013-06-10 3 views
-5
  1. Если у меня есть дата типа столбца, она показывает дату, например, 2013-06-25. Как фильтровать записи только по годам, например. 2011 или 2013?
  2. Как фильтровать записи, которые между датами, например: 2013-06-25 и 2013-07-20
+7

Возможно стоит посмотреть [12.7. Функции даты и времени] (http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html) –

ответ

4

Все даты между 2013-06-25 и 2013-07-20:

SELECT * FROM myTable 
WHERE myDateColumn BETWEEN '2013-06-25' AND '2013-07-20' 

Все даты в 2011 или 2013:

SELECT * FROM myTable 
WHERE YEAR(myDateColumn) IN (2011, 2013) 

Все даты между 2011 и 2013:

SELECT * FROM myTable 
WHERE YEAR(myDateColumn) BETWEEN 2011 AND 2013 

Если у вас есть указатель на дату и вы хотите оптимизировать запрос, вы должны отказаться от вызова функции YEAR:

SELECT * FROM myTable 
WHERE myDateColumn BETWEEN '2011-01-01' AND '2013-12-31' 

И посмотрите на функции даты, как предложено. Удачи!

1

использовать что-то вроде этого:

SELECT * FROM table 
WHERE date LIKE '%2013%' 

, чтобы получить данные, которые содержит год 2013.

Примените это к своей собственной структуре таблицы, и оно должно дать желаемый результат.

1

Возможно, вы должны посмотреть на MySql's date and time functions, который показывает вам много информации о различных функциях, доступных для даты и времени. Однако, чтобы ответить на ваш вопрос, я надеюсь, что эти быстрые запросы помогут.

SELECT 
    * 
FROM MyTable 
WHERE datecolumn > '2011-01-01' 
    AND datecolumn < '2012-01-01' 

В качестве альтернативы, вы можете написать это как

SELECT 
    * 
FROM MyTable 
WHERE datecolumn BETWEEN '2011-01-01' AND '2012-01-01' 

Написание запросов таким образом, а не с помощью функции YEAR поможет воспользоваться индексами (если таковые имеются).

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