Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/59.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每周的表现如何(日期[,模式]);工作还是我做错了什么?_Mysql_Date - Fatal编程技术网

MySQL每周的表现如何(日期[,模式]);工作还是我做错了什么?

MySQL每周的表现如何(日期[,模式]);工作还是我做错了什么?,mysql,date,Mysql,Date,我需要得到给定日期一周的开始和结束日期。 我需要给定日期的一周从星期一开始 如果我使用mode选项运行此查询而不使用out SELECT EXTRACT(YEAR FROM '2015-01-20') YEAR, WEEK('2015-01-20') WK_No , STR_TO_DATE(CONCAT(EXTRACT(YEAR FROM '2015-01-20'), WEEK('2015-01-20'), 'Monday'), '%X%V %W') Mon,

我需要得到给定日期一周的开始和结束日期。 我需要给定日期的一周从星期一开始

如果我使用mode选项运行此查询而不使用out

SELECT EXTRACT(YEAR FROM '2015-01-20') YEAR,
       WEEK('2015-01-20') WK_No ,
       STR_TO_DATE(CONCAT(EXTRACT(YEAR FROM '2015-01-20'), WEEK('2015-01-20'), 'Monday'), '%X%V %W') Mon,
       STR_TO_DATE(CONCAT(EXTRACT(YEAR FROM '2015-01-20'), WEEK('2015-01-20'), 'Tuesday'), '%X%V %W') Tues,
       STR_TO_DATE(CONCAT(EXTRACT(YEAR FROM '2015-01-20'), WEEK('2015-01-20'), 'Wednesday'), '%X%V %W') Wed,
       STR_TO_DATE(CONCAT(EXTRACT(YEAR FROM '2015-01-20'), WEEK('2015-01-20'), 'Thursday'), '%X%V %W') Thur,
       STR_TO_DATE(CONCAT(EXTRACT(YEAR FROM '2015-01-20'), WEEK('2015-01-20'), 'Friday'), '%X%V %W') Fri,
       STR_TO_DATE(CONCAT(EXTRACT(YEAR FROM '2015-01-20'), WEEK('2015-01-20'), 'Saturday'), '%X%V %W') Sat,
       STR_TO_DATE(CONCAT(EXTRACT(YEAR FROM '2015-01-20'), WEEK('2015-01-20'), 'Sunday'), '%X%V %W') Sun;
YEAR WK_No Mon          Tues        Wed         Thur        Fri         Sat         Sun
2015 3     2015-01-19   2015-01-20  2015-01-21  2015-01-22  2015-01-23  2015-01-24  2015-01-18
我得到以下结果

YEAR WK_No Mon          Tues        Wed         Thur        Fri         Sat         Sun
2015 3     2015-01-19   2015-01-20  2015-01-21  2015-01-22  2015-01-23  2015-01-24  2015-01-18
本周从18日太阳开始

根据mysql帮助

如果我将模式设置为1、3、5、7,我的一周应该从周一开始,但没有一个周一开始 如果我使用模式1或3,例如模式1

SELECT EXTRACT(YEAR FROM '2015-01-20') YEAR,
       WEEK('2015-01-20',1) WK_No ,
       STR_TO_DATE(CONCAT(EXTRACT(YEAR FROM '2015-01-20'), WEEK('2015-01-20',1), 'Monday'), '%X%V %W') Mon,
       STR_TO_DATE(CONCAT(EXTRACT(YEAR FROM '2015-01-20'), WEEK('2015-01-20',1), 'Tuesday'), '%X%V %W') Tues,
       STR_TO_DATE(CONCAT(EXTRACT(YEAR FROM '2015-01-20'), WEEK('2015-01-20',1), 'Wednesday'), '%X%V %W') Wed,
       STR_TO_DATE(CONCAT(EXTRACT(YEAR FROM '2015-01-20'), WEEK('2015-01-20',1), 'Thursday'), '%X%V %W') Thur,
       STR_TO_DATE(CONCAT(EXTRACT(YEAR FROM '2015-01-20'), WEEK('2015-01-20',1), 'Friday'), '%X%V %W') Fri,
       STR_TO_DATE(CONCAT(EXTRACT(YEAR FROM '2015-01-20'), WEEK('2015-01-20',1), 'Saturday'), '%X%V %W') Sat,
       STR_TO_DATE(CONCAT(EXTRACT(YEAR FROM '2015-01-20'), WEEK('2015-01-20',1), 'Sunday'), '%X%V %W') Sun;
我的结果是如此错误,这根本不是真的

YEAR    WK_No   Mon         Tues        Wed         Thur        Fri         Sat         Sun
2015    4       2015-01-26  2015-01-27  2015-01-28  2015-01-29  2015-01-30  2015-01-31  2015-01-25
我有一个不包括日期的星期,这个星期仍然从星期天开始

如果我使用模式5或7,例如模式5

SELECT EXTRACT(YEAR FROM '2015-01-20') YEAR,
       WEEK('2015-01-20',5) WK_No ,
       STR_TO_DATE(CONCAT(EXTRACT(YEAR FROM '2015-01-20'), WEEK('2015-01-20',5), 'Monday'), '%X%V %W') Mon,
       STR_TO_DATE(CONCAT(EXTRACT(YEAR FROM '2015-01-20'), WEEK('2015-01-20',5), 'Tuesday'), '%X%V %W') Tues,
       STR_TO_DATE(CONCAT(EXTRACT(YEAR FROM '2015-01-20'), WEEK('2015-01-20',5), 'Wednesday'), '%X%V %W') Wed,
       STR_TO_DATE(CONCAT(EXTRACT(YEAR FROM '2015-01-20'), WEEK('2015-01-20',5), 'Thursday'), '%X%V %W') Thur,
       STR_TO_DATE(CONCAT(EXTRACT(YEAR FROM '2015-01-20'), WEEK('2015-01-20',5), 'Friday'), '%X%V %W') Fri,
       STR_TO_DATE(CONCAT(EXTRACT(YEAR FROM '2015-01-20'), WEEK('2015-01-20',5), 'Saturday'), '%X%V %W') Sat,
       STR_TO_DATE(CONCAT(EXTRACT(YEAR FROM '2015-01-20'), WEEK('2015-01-20',5), 'Sunday'), '%X%V %W') Sun;
我得到了与不使用mode选项相同的结果

SELECT EXTRACT(YEAR FROM '2015-01-20') YEAR,
       WEEK('2015-01-20') WK_No ,
       STR_TO_DATE(CONCAT(EXTRACT(YEAR FROM '2015-01-20'), WEEK('2015-01-20'), 'Monday'), '%X%V %W') Mon,
       STR_TO_DATE(CONCAT(EXTRACT(YEAR FROM '2015-01-20'), WEEK('2015-01-20'), 'Tuesday'), '%X%V %W') Tues,
       STR_TO_DATE(CONCAT(EXTRACT(YEAR FROM '2015-01-20'), WEEK('2015-01-20'), 'Wednesday'), '%X%V %W') Wed,
       STR_TO_DATE(CONCAT(EXTRACT(YEAR FROM '2015-01-20'), WEEK('2015-01-20'), 'Thursday'), '%X%V %W') Thur,
       STR_TO_DATE(CONCAT(EXTRACT(YEAR FROM '2015-01-20'), WEEK('2015-01-20'), 'Friday'), '%X%V %W') Fri,
       STR_TO_DATE(CONCAT(EXTRACT(YEAR FROM '2015-01-20'), WEEK('2015-01-20'), 'Saturday'), '%X%V %W') Sat,
       STR_TO_DATE(CONCAT(EXTRACT(YEAR FROM '2015-01-20'), WEEK('2015-01-20'), 'Sunday'), '%X%V %W') Sun;
YEAR WK_No Mon          Tues        Wed         Thur        Fri         Sat         Sun
2015 3     2015-01-19   2015-01-20  2015-01-21  2015-01-22  2015-01-23  2015-01-24  2015-01-18
如何获取给定日期一周的开始和结束日期。
给定日期的一周从星期一开始?

如果我理解正确,您希望找到一周的开始和结束日期,分别是星期一和星期日,作为输入

这比您现在使用DATE_ADD和SUBDATE函数要容易得多

有关这些函数的更多信息,请参阅

通过这些查询,您可以创建一个函数来处理此问题。约会可以代替演员,我回家后会调查的

本周下周日:

选择演员“2015-04-22”+间隔6-工作日“2015-04-22”日作为日期

本周开始:

选择子日期“2015-04-26”,工作日“2015-04-26”作为日期


编辑:反应有点太快,编辑了查询,周末可能有点太复杂了,我回家后会调查一下。

只是为了回答原始查询错误的原因:您使用STR_to_DATE和%X%V%W作为格式掩码,使用提供的周数将字符串转换为正确的日期。但是,此功能还需要了解您的“周开始”

根据需要,有以下选项:

%V  Week (01..53), where Sunday is the first day of the week; WEEK() mode 2; used with %X
%v  Week (01..53), where Monday is the first day of the week; WEEK() mode 3; used with %x
因此,您应该使用例如STR_TO_DATECONCATEXTRACTYEAR FROM'2015-01-20',WEEK'2015-01-20',1',Monday','%x%v%W'Mon,让这一周从周一开始