我有这个问题:
SELECT *
FROM news
WHERE STATE LIKE 'SI'
AND data<'".time()."'
ORDER
BY data DESC
limit 0,1
我想知道函数时间是否正确,因为合成酶有错误。 谢谢你!
答案 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())