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

MySQL多条件更新当前时间报错,求语法排查与解决方法

解决MariaDB中SQL语法报错的问题

嘿,这个问题其实很常见——你用了SQL Server专属的函数GetDate(),但MariaDB(和MySQL)并不支持这个函数,这就是导致语法报错的直接原因。咱们一步步来修正:

核心问题点

GetDate()是SQL Server用来获取当前时间的函数,MariaDB里对应的替代函数是:

  • NOW():返回当前完整的日期+时间(格式如YYYY-MM-DD HH:MM:SS),和SQL Server的GetDate()功能一致
  • CURDATE():仅返回当前日期(格式YYYY-MM-DD),适合匹配纯日期类型的字段

修正后的SQL语句

首先可以把你的嵌套子查询简化(原语句的NIP IN(...)完全没必要嵌套),同时替换正确的时间函数:

UPDATE Presensi 
SET jam_pulang = NOW() 
WHERE faceid = 101 
  AND Tanggal = CURDATE();

特殊情况处理

如果你的Tanggal字段存储的是datetime类型(不是纯日期),需要提取日期部分来匹配:

UPDATE Presensi 
SET jam_pulang = NOW() 
WHERE faceid = 101 
  AND DATE(Tanggal) = CURDATE();

为什么这样改?

  1. 替换GetDate()为NOW():让MariaDB能识别当前时间函数
  2. 用CURDATE()替代Convert(date, GetDate()):MariaDB中直接用CURDATE()就能获取当前日期,无需额外转换
  3. 简化WHERE条件:原语句的子查询SELECT nip from presensi where faceid=101完全可以直接写成faceid = 101,既减少不必要的嵌套,又提升执行效率

内容的提问来源于stack exchange,提问作者Aulia Mei Azizi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 07:13:39