【问题标题】:how to use the function time in query myql如何在查询mysql中使用时间函数
【发布时间】:2018-07-23 06:01:29
【问题描述】:

我有这个问题:

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

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

【问题讨论】:

  • 您通常会在 MySQL 查询中使用 NOW() 来获取当前时间。我也对你的专栏名称感到困惑:data 而不是date,它是什么?该列的类型是什么?这很重要。
  • @kikosoftware 在葡萄牙语、巴斯克语和加泰罗尼亚语中(例如)数据表示日期
  • @Strawberry:是的,它可能是英语和伊比利亚语的混合体。 'SI' 将是 'YES' 和 'news' 只是 'news'。不幸的是,“数据”在英语中的意思是别的意思。
  • ('SELECT * FROM news WHERE STATE LIKE 'yes' AND date

标签: php jquery mysql


【解决方案1】:

MySQL 中有保留字,如果没有明确指出它们是名称,则不能将其用作列名。见:

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

“数据”和“日期”都是保留字。使用反引号表示它们被用作名称:

$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";

如您所见,我不得不猜测这些列的真正含义,因为从名称中并不能直接清楚地看到。应该是,因为这就是他们的目的。

【讨论】:

  • 我不认为是单词造成了问题,而是时间函数,因为当我不正确使用它时,所有函数都正确
【解决方案2】:

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

select TIME();

你需要这样使用它:

select TIME(now());

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

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

【讨论】:

    猜你喜欢
    • 2011-05-29
    • 2011-12-18
    • 1970-01-01
    • 1970-01-01
    • 2010-11-24
    • 2013-08-18
    • 2015-10-21
    • 1970-01-01
    • 2011-04-20
    相关资源
    最近更新 更多