Вытащите год из метки времени sql

У меня есть проблема при извлечении года из поля метки времени 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 или любой другой язык сценариев, если это возможно.

10
задан vahid abdi 25 February 2014 в 05:48
поделиться

3 ответа

С какой проблемой вы столкнулись и можете ли вы включить вывод 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 |
+----+
14
ответ дан 3 December 2019 в 14:52
поделиться

использовать функцию CAST :)

ВЫБРАТЬ идентификатор ИЗ ТАБЛИЦЫ, ГДЕ ГОД (CAST (creation_date AS DATE)) = 2010

должен работать с меткой времени создания_даты

[[править]], добавлено () вокруг приведения

6
ответ дан 3 December 2019 в 14:52
поделиться

Следующее работает нормально,

SELECT id FROM TABLE WHERE DATE_FORMAT( creation_date,  "%Y" ) = "2010"

Форматирование данных действительно полезно для подобных запросов, я использовал его множество раз, например, для разбивки данных на 10-минутные интервалы...

2
ответ дан 3 December 2019 в 14:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: