如何查询存储为int的日期(11)

时间:2015-04-09 12:20:15

标签: php mysql date

日期存储在int(11)中,作为fuelphp的默认值。现在我想为archive.i.e按月和年提取数据。使用条件的mysql查询作为MONTH(日期)='二月'和年(日期)=' 2014'。 我尝试使用以下mysql查询但无济于事。

SELECT
    contents.*,
    menus.menu_parent,
    categories.category_alias
FROM
    contents
LEFT JOIN
    menus ON menus.link = contents.id
JOIN
    categories ON categories.id = contents.category_id
WHERE
    contents.status = '1' AND
    DATE_FORMAT(FROM_UNIXTIME(contents.`published_date`), '%Y %M') = '2014 January' AND
    contents.category_id = 3

数据库中的日期值如下所示: 2014年8月17日 - 1408212900 2015年3月27日 - 1427393700

存储到数据库期间:strtotime(日期)

我如何解决这个问题? 欢迎任何帮助/建议。提前谢谢。

1 个答案:

答案 0 :(得分:1)

也许这样的事情可以帮到你:

SELECT contents.*, menus.menu_parent, categories.category_alias 
FROM contents 
LEFT JOIN menus ON menus.link = contents.id 
JOIN categories ON categories.id = contents.category_id 
WHERE contents.status = '1' 
AND MONTHNAME(FROM_UNIXTIME(last_activity)) = 'January'
AND YEAR(FROM_UNIXTIME(last_activity)) = 2014
AND contents.category_id = 3;

您可以先使用

将您要比较的字段转换为实际日期
FROM_UNIXTIME

有关MySQL中日期时间函数的更多信息: https://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html

编辑: 对于查询改进,您可以将两者结合起来:

SELECT contents.*, menus.menu_parent, categories.category_alias 
FROM contents 
LEFT JOIN menus ON menus.link = contents.id 
JOIN categories ON categories.id = contents.category_id 
WHERE contents.status = '1' 
AND DATE_FORMAT((FROM_UNIXTIME(last_activity)),'%M-%Y') = 'January-2014'
AND contents.category_id = 3;