根据时间戳过滤sql结果

时间:2018-06-16 23:46:47

标签: sql

我有以下代码

$thedate = "2018-06-04"; // YYYY-MM-DD

SELECT * 
FROM (`leadactivity`) 
WHERE statusdate = $thedate 
ORDER BY id DESC 
LIMIT 25

我试图仅显示statusdate =所提供日期的结果。但是因为在sql中,列使用Timestamp自动更新,它包括时间,并且由于某种原因只是没有给出任何结果。

关于我做错的任何想法?

3 个答案:

答案 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;