Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL 8.0参考称MOD()+1返回与1+MOD()不同的结果_Mysql_Documentation - Fatal编程技术网

MySQL 8.0参考称MOD()+1返回与1+MOD()不同的结果

MySQL 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

我正在努力学习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,12


我在这里遗漏了什么吗?

以下两个表达式是相同的,因为根据定义,加法是可交换的:

MOD(MONTH(CURDATE()), 12) + 1
1 + MOD(MONTH(CURDATE()), 12)

为什么这两种方法都有效的逻辑是,当当前日期的月份(介于1和12之间的数字)等于或小于11时,模乘12只返回该数字,我们再加上一个月。在12月12日的情况下,表达式12%12返回0,然后我们添加1以获得1月1日。

很好的解释啊,谢谢。我现在明白了。