You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在MariaDB中按时间戳查询且不触发mysqli_sql_exception

解决MariaDB查询最近60秒验证码的语法错误问题
  • 问题根源是TIMESTAMP_SUB函数在MariaDB中的兼容性问题,换成以下两种写法即可解决:

写法一:使用DATE_SUB函数

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

写法二:直接使用时间减法表达式(更简洁)

$stmt = $conn->prepare(
        "SELECT * 
        FROM login_codes 
        WHERE u_id = ? 
        AND created_at >= CURRENT_TIMESTAMP() - INTERVAL 60 SECOND 
        ORDER BY created_at DESC 
        LIMIT 1");
  • 额外注意:确认created_at字段的数据类型为DATETIME或TIMESTAMP,否则时间比较会出现异常。

内容的提问来源于stack exchange,提问作者Kieran W

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 05:20:53