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

MySQL/PostgreSQL/SQLite/Oracle/M$SQL/....

Модератор: terminus

Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Аватара пользователя
dikens3
подполковник
Сообщения: 4856
Зарегистрирован: 2006-09-06 16:24:08
Откуда: Нижний Новгород
Контактная информация:

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

Непрочитанное сообщение dikens3 » 2007-05-25 13:34:05

Итак есть таблица с полем, в котором устанавливается время записи строки.

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

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, но никак не могу применить. :-(
Лучше установить FreeBSD, чем потратить 30 лет на Linux'ы и выяснить какой из них хуже.

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Аватара пользователя
alex3
лейтенант
Сообщения: 872
Зарегистрирован: 2006-11-20 16:47:56
Откуда: Переславль
Контактная информация:

Непрочитанное сообщение alex3 » 2007-05-25 13:41:27

а может с помощью шелла обработать?
Если ipfw можно считать речью обычного человека, то pf - речь политика. За каждой ошибкой -ядерный песец.

Аватара пользователя
dikens3
подполковник
Сообщения: 4856
Зарегистрирован: 2006-09-06 16:24:08
Откуда: Нижний Новгород
Контактная информация:

Непрочитанное сообщение dikens3 » 2007-05-25 13:51:32

Разобрался. Я на PHP тут прогу пишу. Вот и нужно.
Получилось так:

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

SELECT DISTINCT(EXTRACT(YEAR FROM`date-time`)) FROM log ORDER BY `date-time`;
Лучше установить FreeBSD, чем потратить 30 лет на Linux'ы и выяснить какой из них хуже.

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35462
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Непрочитанное сообщение Alex Keda » 2007-05-25 16:01:03

а я бы на мусе, субстрингом сделал :)))
Убей их всех! Бог потом рассортирует...

Аватара пользователя
dikens3
подполковник
Сообщения: 4856
Зарегистрирован: 2006-09-06 16:24:08
Откуда: Нижний Новгород
Контактная информация:

Непрочитанное сообщение dikens3 » 2007-05-25 16:51:20

lissyara писал(а):а я бы на мусе, субстрингом сделал :)))
И как?
Лучше установить FreeBSD, чем потратить 30 лет на Linux'ы и выяснить какой из них хуже.

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35462
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Непрочитанное сообщение Alex Keda » 2007-05-25 20:04:49

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

SELECT SUBSTRING_INDEX(`datetime`, '-', 1) FROM ....
навскидку - так, но надо уточнять синтаксис
Убей их всех! Бог потом рассортирует...

Аватара пользователя
bakake
сержант
Сообщения: 265
Зарегистрирован: 2006-11-21 14:04:58

Непрочитанное сообщение bakake » 2007-05-26 8:01:51

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

select year(current_timestamp);
или

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

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

Аватара пользователя
bakake
сержант
Сообщения: 265
Зарегистрирован: 2006-11-21 14:04:58

Непрочитанное сообщение bakake » 2007-05-26 8:20:28

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

Аватара пользователя
dikens3
подполковник
Сообщения: 4856
Зарегистрирован: 2006-09-06 16:24:08
Откуда: Нижний Новгород
Контактная информация:

Непрочитанное сообщение dikens3 » 2007-05-26 9:17:54

Для этого и нужно. У меня заполнение log будет около 100 000 строк в месяц. Думаешь не потянет?
Лучше установить FreeBSD, чем потратить 30 лет на Linux'ы и выяснить какой из них хуже.

Аватара пользователя
bakake
сержант
Сообщения: 265
Зарегистрирован: 2006-11-21 14:04:58

Непрочитанное сообщение bakake » 2007-05-26 9:38:50

Пару лет потянет :)