Как выбрать UNIX date = "2010" в запросе MySQL? - PullRequest
5 голосов
/ 25 октября 2010

Вот мой код:

SELECT `date`, title, category, url
FROM cute_news
WHERE category = '4'
ORDER BY `date` DESC

Я хочу создавать страницы на основе года, например, 2010, 2009, 2008 и так далее.База данных сохраняет дату как UNIX_Timestamp.Не знаете, как запросить набор записей с параметром Year?

WHERE unix_timestamp(YEAR) = '2010' or something???

Заранее спасибо.Я сбит с толку.

Ответы [ 3 ]

4 голосов
/ 25 октября 2010

Вам понадобится что-то вроде WHERE YEAR(FROM_UNIXTIME(date_field)) = 2010.

3 голосов
/ 25 октября 2010

Вы можете использовать функцию FROM_UNIXTIME(), но помните, что при этом не будет использоваться индекс для столбца date, если он существует:

... WHERE YEAR(FROM_UNIXTIME(`date`)) = 2010

Чтобы ваш запрос был sargable , вместо него можно использовать функцию UNIX_TIMESTAMP():

... WHERE `date` >= UNIX_TIMESTAMP('2010-01-01 00:00:00') AND 
          `date` < UNIX_TIMESTAMP('2011-01-01 00:00:00')
0 голосов
/ 25 октября 2010

Попробуйте:

WHERE YEAR(FROM_UNIXTIME(`date`)) = 2010;
...