【问题标题】:how to query date stored as int(11)如何查询存储为 int(11) 的日期
【发布时间】:2015-04-09 12:20:14
【问题描述】:

日期存储在 int(11) 作为fuelphp 的默认值。现在我想按月和年提取数据进行归档。即使用 mysql 查询,条件为 MONTH(date) = 'February' AND YEAR(date) = '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(date)

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

【问题讨论】:

  • 请编辑您的问题并举例说明值的样子。
  • 日期值是什么样的?
  • 你的意思是 UNIX 时间戳 int ?
  • but to no avail 你应该详细说明一下。是否有任何错误信息,结果是不是你所期望的,结果是什么,应该是什么,等等。
  • @LieRyan 当前年份是数据正在实现,但对于以前的日期,当有数据存储时,数据也是空的。

标签: php mysql date


【解决方案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;

【讨论】:

  • @Arzgethalm 查询运行良好,但为什么它不适用于 1 月 1 日?它适用于 1 月 2 日,但不适用于 1 月 1 日。为什么?
  • @sammy 如果你也打算过滤天数。只需在条件中添加它: DAY(FROM_UNIXTIME(last_activity)) = 1 for specific days
  • @Arzgethalm 不,我不需要特定日期,但问题是如果日期是 2014 年 1 月 1 日并且我查询 1 月和 2014 年它没有提供数据。这就是问题所在。
  • @sammy 1 月 1 日有任何条目吗? DATE_FORMAT((FROM_UNIXTIME(last_activity)),'%d-%M-%Y') = '01-January-2015' 尝试检查它们是否存在。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-09-21
  • 1970-01-01
  • 2015-04-27
  • 2021-02-26
  • 1970-01-01
  • 2011-09-26
  • 2021-06-04
相关资源
最近更新 更多