我有以下代码
$thedate = "2018-06-04"; // YYYY-MM-DD
SELECT *
FROM (`leadactivity`)
WHERE statusdate = $thedate
ORDER BY id DESC
LIMIT 25
我试图仅显示statusdate =所提供日期的结果。但是因为在sql中,列使用Timestamp自动更新,它包括时间,并且由于某种原因只是没有给出任何结果。
关于我做错的任何想法?
答案 0 :(得分:1)
试试这个:
SELECT * FROM (`leadactivity`)
WHERE statusdate like '%"$thedate"%'
ORDER BY id DESC LIMIT 25
答案 1 :(得分:1)
将时间戳与日期值进行比较时,假设是午夜的时间(即00:00:00
)。根据{{1}}到00:00:00
之间的日期指定时间戳的范围,如下所示:
23:59:59
根据您的语言和数据库,实现此目的的语法会有所不同。
尽管将时间戳转换为比较前的日期更简单,但您的数据库不会使用timestamp列上的索引(如果存在),从而导致性能最差。
答案 2 :(得分:1)
您的代码看起来像MySQL。一个简单的方法是:
SELECT la.*
FROM leadactivity la
WHERE DATE(la.statusdate) = $thedate
ORDER BY id DESC
LIMIT 25;
但是,使用DATE()
函数会阻止使用索引。所以,更好的方法是:
SELECT la.*
FROM leadactivity la
WHERE la.statusdate >= $thedate AND la.statusdate < $thedate + interval 1 day
ORDER BY la.id DESC
LIMIT 25;