mysql日期函数的bug

mysql版本:5.2.16 OSS Beta Revision 5249

 

昨天在用mysql的日期函数的时候发现这样一个有趣的事情。如下:

 

SELECT DAYOFWEEK('2011-03-26'),DAYNAME('2011-03-26'),WEEKOFYEAR('2011-03-26');

-- 结果:'7', 'Saturday', '12'

 

SELECT DAYOFWEEK('2011-03-27'),DAYNAME('2011-03-27'),WEEKOFYEAR('2011-03-27');

-- 结果:'1', 'Sunday', '12'

 

SELECT DAYOFWEEK('2011-03-28'),DAYNAME('2011-03-28'),WEEKOFYEAR('2011-03-28');

-- 结果:'2', 'Monday', '13'

 

这个查询结果很有趣,不知道有没有发现。

 

从查询结果出发得出这样的结论:

 

'2011-03-26' 是Saturday,一个星期的最后一天:7. 同时这周是一年中的第12周。

 

'2011-03-27'是Sunday,一个星期的第一天:1.

 

'2011-03-28'是Monday,一个星期的第二天:2.

 

从上面,我们得出。周是以周日为一周的第一天算的。

 

到此,做个推理:'2011-03-26' 这周是一年中的第12周,这个没有问题。

 

那么,很容易想到'2011-03-27'这周是一年周的第13周,和'2011-03-28'是在同一周。

 

我们再看查询结果,发现:

 

-- 结果:'1', 'Sunday', '12' 即'2011-03-27'这周,在结果中显示是一年周的第12周。

-- 结果:'2', 'Monday', '13'即2011-03-28'这周,在结果中显示是一年周的第13周。

 

这里的结果显示:周日是位于上一周,是一周的结束。

 

和刚得到的结果:周日是一周的开始,相矛盾。

 

DAYOFWEEK这个日期函数和WEEKOFYEAR日期函数有一个混淆的地方:一周开始的定义不一样。MYSQL 5.2.16 BUG!!!

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值