MySQL 8.0参考称MOD()+1返回与1+MOD()不同的结果
我正在努力学习MySQL阅读官方MySQL 8.0参考/教程。 在解释如何使用计算得到1月份的段落中,它说 完成相同任务的另一种方法是添加1以获得 使用模函数MOD后的下个月 如果月份值当前为12,则将其包装为0: mysql>选择名字,从宠物出生 其中MONTHbirth=MODMONTHCURDATE,12+1 MONTH返回一个介于1和12之间的数字。12岁左右 返回一个介于0和11之间的数字。因此,加法必须在 国防部,否则我们将从11月11日到1月1日 我的问题是为什么添加应该在MOD之后? 即使加法在'MODMONTHCURDATE,12'之前,我也会得到相同的结果,如下所示 mysql>选择名字,从宠物出生 其中MONTHbirth=1+MODMONTHCURDATE,12MySQL 8.0参考称MOD()+1返回与1+MOD()不同的结果,mysql,documentation,Mysql,Documentation,我正在努力学习MySQL阅读官方MySQL 8.0参考/教程。 在解释如何使用计算得到1月份的段落中,它说 完成相同任务的另一种方法是添加1以获得 使用模函数MOD后的下个月 如果月份值当前为12,则将其包装为0: mysql>选择名字,从宠物出生 其中MONTHbirth=MODMONTHCURDATE,12+1 MONTH返回一个介于1和12之间的数字。12岁左右 返回一个介于0和11之间的数字。因此,加法必须在 国防部,否则我们将从11月11日到1月1日 我的问题是为什么添加应该在MOD
我在这里遗漏了什么吗?以下两个表达式是相同的,因为根据定义,加法是可交换的:
MOD(MONTH(CURDATE()), 12) + 1
1 + MOD(MONTH(CURDATE()), 12)
为什么这两种方法都有效的逻辑是,当当前日期的月份(介于1和12之间的数字)等于或小于11时,模乘12只返回该数字,我们再加上一个月。在12月12日的情况下,表达式12%12返回0,然后我们添加1以获得1月1日。很好的解释啊,谢谢。我现在明白了。