2013-11-11 3 views
0

У меня есть таблица с полем даты, мне нужно выяснить, какие годы имеют записи и выводить только список лет, например ([2011,2012,2013]), единственный способ, которым я предположили, что нужно получить все строки, а затем проанализировать в петле php.Запрос MYSQL, у которого есть записи

Кто-нибудь знает способ достичь этого с помощью чистого SQL, или мне придется анализировать данные с помощью php-функции?

ответ

3
SELECT DISTINCT YEAR(datecolumn) FROM yourtable 
  • YEAR() является функцией MySQL, которая возвращает год, соответствующий текущей дате, хранящегося в столбце.
  • SELECT DISTINCT вернет только уникальные значения для результата YEAR(datecolumn). Более подробную информацию можно найти в этом tutorial

Если вам нужно вывести сам список в одном SQL запросе Linger's answer явно путь.

3

Try делает:

SELECT YEAR(dateColumn) 
FROM yourTable 
GROUP BY YEAR 
3

Вы утверждаете, что вы хотите получить список как [2011,2012,2013]. Следующий SQL Fiddle демонстрирует, как можно достичь такую ​​вещь в одном поле:

SELECT CONCAT('[', GROUP_CONCAT(MQ.MyYear), ']') AS YearsList 
FROM 
(
    SELECT DISTINCT YEAR(MyDateField) AS MyYear 
    FROM MyTable 
) AS MQ 

В приведенном выше примере я использую вспомогательный запрос, чтобы получить все уникальные годы, найденных в таблице. Затем я использую GROUP_CONCAT, чтобы объединить их все вместе, разделяя каждый год на ,. Затем я использую CONCAT, чтобы добавить скобки спереди и по конец строки.

+0

Я был неправильно понят, и был моим плохим, не хотел, чтобы точный вывод sintax, всего лишь список лет, но плюс один для вашего действительно замечательного ответа. –

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