【问题标题】:Show today orders from table从表中显示今天的订单
【发布时间】:2013-06-20 23:33:07
【问题描述】:

我不明白如何从 我的 sql 表 获取输出。

日期 存储在 int 中。例如,一行的日期输出类似于 1362157869

我想在查询中显示今天的订单

   php : $today = date("y-m-d", time());

   query : SELECT * FROM test WHERE date = '$today'

但它没有工作。我也试试这个:

    SELECT * FROM test WHERE date LIKE '$today'

【问题讨论】:

  • 也许调整 $today 以适应基础中预期的格式?我猜日期是timestamp 格式。

标签: php mysql date int


【解决方案1】:

没有 PHP var 的查询:

SELECT * FROM test WHERE date = DATE(NOW());

【讨论】:

  • 你的日期栏是否也包含时间?
  • 当订单插入表格时 date = time()
  • SELECT * FROM test WHERE date = UNIX_TIMESTAMP(NOW());
【解决方案2】:

您将日期存储为 UNIXTIMESTAMP,因此您必须使用 FROM_UNIXTIME 将其转换为 DATETIME,然后您必须使用 DATE() 函数仅提取日期部分,忽略时间:

SELECT * FROM test WHERE DATE(FROM_UNIXTIME(date)) = CURDATE()

请看小提琴here。然后,您可以使用以下内容提取昨天的记录:

SELECT * FROM test WHERE DATE(FROM_UNIXTIME(date)) = CURDATE() - INTERVAL 1 DAY

或者一个具体的日期:

SELECT * FROM test WHERE DATE(FROM_UNIXTIME(date)) = '2013-03-01'

利用索引

假设您的日期列不仅可以包含日期部分,还可以包含时间,您也可以使用它来返回所有今天的记录:

SELECT * FROM test WHERE date >= UNIX_TIMESTAMP(CURDATE())

这是昨天的:

SELECT * FROM test WHERE date >= UNIX_TIMESTAMP(CURDATE() - INTERVAL 1 DAY)
                         AND date < UNIX_TIMESTAMP(CURDATE())

或者这个特定日期:

SELECT * FROM test WHERE date >= UNIX_TIMESTAMP('2013-03-01')
                         AND date < UNIX_TIMESTAMP('2013-03-01' + INTERVAL 1 DAY)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-05
    • 1970-01-01
    • 2011-08-03
    • 2013-07-04
    • 2010-09-24
    相关资源
    最近更新 更多