mysql中加减月份时的怪异时间计算
我试图对查询执行一些时间计算(timestampadd、timestampdiff),但遇到了一个意外的行为 我在mysql中执行了以下查询:mysql中加减月份时的怪异时间计算,mysql,sql,date,Mysql,Sql,Date,我试图对查询执行一些时间计算(timestampadd、timestampdiff),但遇到了一个意外的行为 我在mysql中执行了以下查询: select timestampdiff(MONTH, timestampadd(MONTH, 1, '2017-01-30'),'2017-01-30') 使用logic将2017-01-30增加一个月,然后请求该日期与2017-01-30之间的月差 我希望结果是平凡的,等于1,但上一个查询的计算结果为0 这搞砸了我的计算 为什么呢 这是直截了当的,
select timestampdiff(MONTH, timestampadd(MONTH, 1, '2017-01-30'),'2017-01-30')
使用logic将2017-01-30增加一个月,然后请求该日期与2017-01-30之间的月差
我希望结果是平凡的,等于1,但上一个查询的计算结果为0
这搞砸了我的计算
为什么呢 这是直截了当的,
您将在1月30日增加1个月,即2017年2月28日
现在,1月30日和2月28日之间的差值只有29天,这还不到一个月的值。(30天)
因此它是0
为了准确起见,您需要小心处理二月。这是直截了当的,
您将在1月30日增加1个月,即2017年2月28日
现在,1月30日和2月28日之间的差值只有29天,这还不到一个月的值。(30天)
因此它是0
为了准确起见,您需要小心处理2月份。那么mysql的月份值是多少呢?30天还是31天?它是30天。因此,加上月份,月份长度是可变的,可以小于30天(1月30日到2月28日是28天),但减去是30天?这对我来说真的很奇怪。我会将答案标记为已接受,但我想真正理解为什么行为在这里不是对称的。是的,事实上它是奇怪的!!是的,我知道,但是为什么函数
timestampdiff()
calculation不能这样做呢?这是个问题吗?需要致电MySQL团队:-(:-)那么mysql的月值是多少呢?30天还是31天?它是30天。因此,加上月份,月份长度是可变的,可以小于30天(1月30日到2月28日是28天),但减去是30天?这对我来说真的很奇怪。我会将答案标记为已接受,但我想真正理解为什么行为在这里不是对称的。是的,事实上它是奇怪的!!是的,我知道,但是为什么函数timestampdiff()
calculation不能这样做呢?这是个问题吗?需要致电MySQL团队:-(:-)这:选择月份(timestampadd(MONTH,1,'2017-01-30'))-月份('2017-01-30')
是否可以解决此问题?这只查看月份数(例如:feb=2)并减去两者。现在,如果您计算1月31日和2月1日,这可能是一个问题,因为只有一天,但这将返回1
month。这:select month(timestampadd(month,1,'2017-01-30'))-month('2017-01-30')
是否可以解决此问题?这只查看月份数(例如:feb=2)并减去两者。现在,如果您计算1月31日和2月1日,这可能是一个问题,因为这只是一天,但这将返回1
month。