-1

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

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

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

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

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

但它没有用。我也试试这个:

    SELECT * FROM test WHERE date LIKE '$today'
4

2 回答 2

1

没有 PHP var 的查询:

SELECT * FROM test WHERE date = DATE(NOW());
于 2013-06-24T12:49:33.813 回答
0

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

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

在此处查看小提琴。然后,您可以使用以下内容提取昨天的记录:

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)
于 2013-06-24T13:09:58.680 回答