如何在 MariaDB 数据库中按时间戳进行选择而不出现未捕获的 mysqli_sql_Exception?

问题描述 投票:0回答:1

我正在尝试从登录代码数据库中选择最近创建的代码,该代码是在过去 60 秒内创建的。我尝试仅使用 MariaDB 查询来执行此操作,但当我尝试运行它时收到此错误代码:

未捕获的 mysqli_sql_exception:您的 SQL 语法有错误;检查与您的 MariaDB 服务器版本相对应的手册,了解在 ') 附近使用的正确语法 ORDER BY 创建时间 第 4 行 DESC LIMIT 1'

查询:

 $stmt = $conn->prepare(
        "SELECT * 
        FROM login_codes 
        WHERE u_id = ? 
        AND created_at >= TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 60 SECOND) 
        ORDER BY created_at DESC 
        LIMIT 1");

我也尝试过其他功能,例如SUBTIME,但似乎没有任何作用。如果我删除整个“AND created_at”行,查询确实有效,但显然我失去了查询的目的。

php mariadb timestamp
1个回答
0
投票

没有这样的tomestamp功能

你可以这样做

SELECT * 
    FROM login_codes 
    WHERE u_id = ? 
    AND created_at >= TIMESTAMPADD(SECOND, -60, CURRENT_TIMESTAMP()) 
    ORDER BY created_at DESC 
    LIMIT 1;

或者

    SELECT * 
    FROM login_codes 
    WHERE u_id = ? 
    AND created_at >= CURRENT_TIMESTAMP() - INTERVAL 60 SECOND  
    ORDER BY created_at DESC 
    LIMIT 1;
© www.soinside.com 2019 - 2024. All rights reserved.