Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/70.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没有weekyear函数_Mysql_Sql - Fatal编程技术网

mysql没有weekyear函数

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(

让我们看看什么是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('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,非字符串函数