如何在查询myql中使用函数时间

时间:2018-02-12 23:14:22

标签: php jquery mysql

我有这个问题:

SELECT * 
  FROM news 
 WHERE STATE LIKE 'SI' 
   AND data<'".time()."'  
 ORDER 
    BY data DESC 
 limit 0,1

我想知道函数时间是否正确,因为合成酶有错误。 谢谢你!

2 个答案:

答案 0 :(得分:0)

MySQL中有一些保留字,你不能将它们用作列名而不清楚地表明它们是名字。参见:

https://dev.mysql.com/doc/refman/5.7/en/keywords.html

两个数据&#39;和&#39; date&#39;是保留字。使用后面的刻度表示它们被用作名称:

$query = "SELECT * 
            FROM `news` 
              WHERE `STATE` LIKE 'SI' 
                AND `data` < '".time()."'  
              ORDER 
                BY `data` DESC 
             LIMIT 0,1

或更好,在我看来,使用更好的列名称:

$query = "SELECT * 
            FROM newsItems 
             WHERE itemState LIKE 'SI' 
               AND creationDate < '".time()."'  
             ORDER 
                BY creationDate DESC 
             LIMIT 0,1";

正如您所看到的,我不得不猜测列的真正含义,因为它们并没有直接从名称中清楚地看出来。它应该是,因为那是他们的目的。

答案 1 :(得分:0)

TIME()是一个函数,您还需要在其中传递参数。
因此,不要像这样使用空白:

select TIME();

您需要以这种方式使用它:

select TIME(now());

注意:在查询中,您需要传递类似(仅当表中有 datetime 字段时)的信息:

AND time(data) < time(now())