【问题标题】:timestamp query not retrieving results?时间戳查询不检索结果?
【发布时间】:2016-03-09 11:45:43
【问题描述】:

您好 :) 我正在查询,它会提取时间戳超过 30 天的结果。以下是我到目前为止的内容:

$result = $db->query("SELECT time FROM table1 WHERE open_time < (NOW() - INTERVAL 30 DAYS)");

如您所见,它会尝试查找超过 30 天的结果,但是当我执行查询时,它不会选择任何行,即使列字段“open_time”超过 30 天.

任何建议我都非常感谢:)

【问题讨论】:

  • 那么“open_time”字段的类型是什么?是日期/日期时间/...?

标签: php mysql


【解决方案1】:

您是否尝试过投射日期字段?

$result = $db->query("SELECT time FROM table1 WHERE CAST(open_time AS DATE) < (NOW() - INTERVAL 30 DAYS)");

编辑:

也许你应该使用这个棘手的查询:

$result = $db->query("SELECT time FROM table1 WHERE open_time <
UNIX_TIMESTAMP(DATE_SUB(NOW(), INTERVAL 30 DAY))"):

【讨论】:

  • 您好,我尝试投射它,但它似乎不起作用:(
  • 你的字段open_time是什么类型的?
  • 是时间戳字段,显示日期(yyyy-mm-dd)和时间(HH-MM-SS)
  • @JoshuaGreenhough 我编辑了我的帖子。您能向我们展示示例数据吗?
  • 您好,抱歉,我现在有点忙,过几个小时就不能尝试了,对不起。
【解决方案2】:

试试这个查询

 $result = $db->query("SELECT time FROM table1 WHERE DATE(`date`) = DATE(NOW() - INTERVAL 30
     DAY")

也可以试试这个以供参考

timestampadd()

SELECT * FROM table WHERE `date` > timestampadd(day, -30, now());

try this link also

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-02-09
    • 2012-09-04
    • 2013-10-10
    • 2020-07-20
    • 1970-01-01
    • 2015-03-05
    • 1970-01-01
    • 2023-01-27
    相关资源
    最近更新 更多