我正在使用向数据库添加一个自定义日期字符串;
$date = date("H:i:sa | d-m-Y");
$sql = "INSERT INTO data
(artist, title, presenter, timeplayed)
VALUES('$artist','$title','$presenter','$date')";
然而,我当时不太清楚如何找回$date,只知道最后24小时的参赛作品。所以在昨天00:00:00到今天23:59:59之间。
我试过:
SELECT * FROM data WHERE timeplayed > DATE_SUB( NOW(), INTERVAL 24 HOUR)
类似的是,它会带回超过24小时的数据。
我将数据存储在timeplayed中,作为varchar。我想知道是不是这个原因?
根据以上注释,您应该将数据保存为正确的mysql日期格式,并且要获得最近24小时的数据,您可以使用NOW()
减去当天的惰性
SELECT * FROM data WHERE timeplayed >= NOW() - INTERVAL 1 DAY;
我认为您应该重新思考您的方法。MySQL中的所有Date
函数都是针对它所期望的格式而设计的。在表示层中这样做会容易得多,因为:
echo date('H:i:sa | d-m-Y', strtotime($row['timeplayed']);
这将允许您按预期使用所有MySQL函数。
为什么不试试:
$from_date = date("Y-m-d", strtotime("2013-12-11"))." 00:00:00";
$to_date = date("Y-m-d", strtotime("2013-12-12")." 11:59:59";
select * from data where timeplayed <= $to_date and timeplayed >= $from_date
由于自定义日期,您唯一的救星是这个查询:
$sql = "SELECT * FROM data WHERE timeplayed LIKE '%".date("d-m-Y")."'";
随着你的桌子越来越大,这将产生糟糕的性能。。。