Страница 1 из 1

Как извлечь года из timestamp?

Добавлено: 2007-05-25 13:34:05
dikens3
Итак есть таблица с полем, в котором устанавливается время записи строки.

Код: Выделить всё

datetime timestamp NOT NULL default CURRENT_TIMESTAMP
Строки имеют вид:

Код: Выделить всё

2001-05-23 13:49:52
2002-05-23 13:49:53
2003-05-23 13:49:54
2004-05-23 13:49:55
2005-05-23 13:49:56
2006-05-23 13:49:56
2007-05-23 13:49:57
2008-05-23 13:49:57
2009-05-23 13:49:57
2010-05-23 13:49:58
Нужно с помощью запроса отобразить это поле, только чтобы в нём были только года, результат запроса должен быть такой:

Код: Выделить всё

2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
Нашёл в доках EXTRACT и DATE_FORMAT, но никак не могу применить. :-(

Добавлено: 2007-05-25 13:41:27
alex3
а может с помощью шелла обработать?

Добавлено: 2007-05-25 13:51:32
dikens3
Разобрался. Я на PHP тут прогу пишу. Вот и нужно.
Получилось так:

Код: Выделить всё

SELECT DISTINCT(EXTRACT(YEAR FROM`date-time`)) FROM log ORDER BY `date-time`;

Добавлено: 2007-05-25 16:01:03
Alex Keda
а я бы на мусе, субстрингом сделал :)))

Добавлено: 2007-05-25 16:51:20
dikens3
lissyara писал(а):а я бы на мусе, субстрингом сделал :)))
И как?

Добавлено: 2007-05-25 20:04:49
Alex Keda

Код: Выделить всё

SELECT SUBSTRING_INDEX(`datetime`, '-', 1) FROM ....
навскидку - так, но надо уточнять синтаксис

Добавлено: 2007-05-26 8:01:51
bakake

Код: Выделить всё

select year(current_timestamp);
или

Код: Выделить всё

SELECT DISTINCT(YEAR(`date-time`)) 
FROM log 
ORDER BY 1;
Ы?

Добавлено: 2007-05-26 8:20:28
bakake
А вообще щас скажу!
Я так понимаю, что этот запрос для наполнения комбо-бокса (или если по хтмл-ному <select>'a) который будет использоваться в качестве фильтра в запросной форме?
Если так, то то при вызове этой формы через полгода-год, мускуль начнет сильно прогибаться из за необходимости пробежаться по довольно большой табличке. Проще завести отдельную табличку с годами и раз в год (или месяц) заполнять ее по крону :)

Добавлено: 2007-05-26 9:17:54
dikens3
Для этого и нужно. У меня заполнение log будет около 100 000 строк в месяц. Думаешь не потянет?

Добавлено: 2007-05-26 9:38:50
bakake
Пару лет потянет :)