У меня есть проблема при извлечении года из поля метки времени mysql. Мне удалось получить его работа с полем даты и времени с помощью этого метода:
SELECT id FROM TABLE WHERE YEAR(creation_date) = 2010
CREATE TABLE IF NOT EXISTS `pub_media` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`parent_id` int(11) DEFAULT NULL,
`title` text,
`filename` text,
`path` text,
`serv_path` text,
`type` enum('images','videos','files','audio','gallery') DEFAULT NULL,
`keywords` text,
`label_id` int(11) DEFAULT NULL,
`creation_date` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
`update_date` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00' ON UPDATE CURRENT_TIMESTAMP,
`rank` int(11) NOT NULL DEFAULT '0',
`deleted` tinyint(1) NOT NULL DEFAULT '0',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
Серверная версия: 5.1.41 Существует ли подобный способ выполнить это действие с полем метки времени? Я хочу сохранить это действие в своем SQL-операторе и не попытаться переместить его в PHP или любой другой язык сценариев, если это возможно.
С какой проблемой вы столкнулись и можете ли вы включить вывод CREATE TABLE
в свой вопрос? У меня это работает в MySQL 5.1.41-3ubuntu12.3:
DROP TABLE IF EXISTS `table1`;
CREATE TABLE `table1` (
`id` int(11) NOT NULL auto_increment,
`ts` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`)
) ENGINE=InnoDB;
INSERT INTO table1 (id) VALUES (1);
SELECT * FROM table1;
+----+---------------------+
| id | ts |
+----+---------------------+
| 1 | 2010-07-05 15:32:11 |
+----+---------------------+
SELECT id FROM table1 WHERE YEAR(ts) = 2010;
+----+
| id |
+----+
| 1 |
+----+
использовать функцию CAST
:)
ВЫБРАТЬ идентификатор ИЗ ТАБЛИЦЫ, ГДЕ ГОД (CAST (creation_date AS DATE)) = 2010
должен работать с меткой времени создания_даты
[[править]], добавлено () вокруг приведения
Следующее работает нормально,
SELECT id FROM TABLE WHERE DATE_FORMAT( creation_date, "%Y" ) = "2010"
Форматирование данных действительно полезно для подобных запросов, я использовал его множество раз, например, для разбивки данных на 10-минутные интервалы...