我正在尝试选择我的表,我正在查看今天发生的事情。
我将其设置为:
WHERE date between CURRENT_DATE and DATE_ADD(CURRENT_DATE, 1, DAY);
我一直收到DATE_ADD is not a valid identifier
的错误.我正在使用mySQL。
我也尝试了DATEADD()
但我认为一个在 MYSQL 中不起作用。
不要为此使用between
! 这包括这两个终结点。 相反:
where date >= current_date and
date < current_date + interval 1 day
或:
where date >= current_date and
date < date_add(current_date, interval 1 day)
你(大概(不希望今天和明天之间有午夜。
顺便说一句,如果date
真的只是一个日期而不是datetime
,以上就可以了,但你也可以写:
where date = current_date
我强烈建议您不要使用:
where date(date) = current_date
因为这会阻止使用date
上的索引。
有时人们会混淆MySQL和Oracle,因为Oracle同时拥有两者。 在 Oracle 中,这看起来像:
where date >= current_date and
date < current_date + interval '1' day
这实际上也适用于MySQL。 或者使用 Oracle 特定的功能:
where date >= trunc(sysdate) and
date < trunc(sysdate) + interval '1' day
代码问题:DATE_ADD()
接受日期作为第一个参数,接受间隔表达式作为第二个参数
考虑:
WHERE mydate BETWEEN CURRENT_DATE() AND DATE_ADD(CURRENT_DATE(), INTERVAL 1 DAY);
或者您可以使用ADDDATE()
,作为第二个参数,它可以接受间隔或天数
WHERE mydate BETWEEN CURRENT_DATE() AND ADDDATE(CURRENT_DATE(), 1);
注1:请注意,CURRENT_DATE()
是一个函数。虽然MySQL也接受拼写CURRENT_DATE
和CURRENT_DATE()
,但我发现括号使目的更清晰。
注2:至于DATEADD()
,它只是在MySQL中不存在。
旧的MySQL版本,你可以这样做。
where date between curdate() and curdate() + 1;
直到当前版本的 mySQL 仍然支持此功能。