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

跨天/长耗时查询中SELECT CURDATE()是否返回多个值?

关于CURDATE()在长时间跨天查询中的返回值问题

嘿,这个问题问到点子上了——很多人会误以为这类日期函数会随查询执行过程动态变化,但其实MySQL里的CURDATE()有个关键的执行特性,我给你掰扯清楚:

CURDATE()(包括类似的NOW()、CURTIME()这类函数)是在查询开始执行的瞬间就计算出固定值,之后不管你的查询跑多久,哪怕跨了一整天,整个查询生命周期里这个值都不会改变。

针对你的两个问题:

  • 问题1:哪怕SELECT CURDATE()的查询跨多天执行、耗时拉得很长,结果里只会返回一个固定值——就是查询启动那一刻的日期,绝不会出现多个值。
  • 问题2:就算你在晚上11:59启动查询,跑了5分钟到次日凌晨,哪怕部分行在次日才被处理,结果集里的CURDATE()也只会是查询启动时的当日日期,不会混进次日的日期。

举个直观的例子,假设你在2024-06-30 23:59:00执行这条查询:

SELECT user_id, CURDATE() AS query_date FROM huge_user_table;

哪怕这个查询直到2024-07-01 00:04:00才执行完毕,结果里所有行的query_date列都会是2024-06-30,不会有任何一行显示2024-07-01。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 03:40:14