我不明白如何从我的 sql 表中获取输出。
表日期存储在int中。例如,一行的日期输出类似于1362157869。
我想在查询中显示今天的订单:
php : $today = date("y-m-d", time());
query : SELECT * FROM test WHERE date = '$today'
但它没有用。我也试试这个:
SELECT * FROM test WHERE date LIKE '$today'
没有 PHP var 的查询:
SELECT * FROM test WHERE date = DATE(NOW());
您将日期存储为 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)