mysql没有weekyear函数
让我们看看什么是weekyear: 在标准ISO8601周算法中,一年中的第一周是一年中至少有4天的一周。根据该定义,第一周的第一天可能在上一年,而一年的最后一天可能在下一年的第一周 考虑MySQL中的日期“2013-12-30”和“2013-12-31”:mysql没有weekyear函数,mysql,sql,Mysql,Sql,让我们看看什么是weekyear: 在标准ISO8601周算法中,一年中的第一周是一年中至少有4天的一周。根据该定义,第一周的第一天可能在上一年,而一年的最后一天可能在下一年的第一周 考虑MySQL中的日期“2013-12-30”和“2013-12-31”: select weekofyear('2013-12-30') 返回1,表示2013-12-30是2014年的第一周,所以“2013-12-30”的周末应该是2014年,但在MySQL中,我只找到了2年的函数: select year(
select weekofyear('2013-12-30')
返回1,表示2013-12-30是2014年的第一周,所以“2013-12-30”的周末应该是2014年,但在MySQL中,我只找到了2年的函数:
select year('2013-12-30') -- return 2013,certainly the year field
select yearweek('2013-12-30') -- return 201352,not correct,should be 201401
因为这一周在2013年剩下3天,在2014年剩下4天,所以这一天的周末应该是2014年
如何在mysql中获得正确的结果
更新:
我发现:
select yearweek('2013-12-30',3)
返回201401,根据ISO8601周算法,这是正确的结果,但如何分别获得2014年和01年的工作周?编辑:
可以将mode参数与字符串函数一起使用,以获得所需的结果,如下所示:
select
LEFT(yearweek('2013-12-30', 3), 4) AS yr,
RIGHT(yearweek('2013-12-30', 3), 2) AS wk
参考:
我已经算出了,因为yearweek(date,3)返回一个6位数的整数,所以我可以通过除以100得到年份部分:
SELECT count(1) as count, yearweek(time,3) DIV 100 as year,weekofyear(time) as week FROM XXX
会给我我想要的。拆分结果对你不起作用吗?谢谢你的回答,我在我的项目中使用模式3进行周算法。请参阅上面的修订答案,它使用模式3和字符串函数分别获取年和周。谢谢,@Joseph B,请参阅我的答案,yearweek返回一个带6位数字的整数,因此我使用DIV,非字符串函数