MySQL将YEARWEEK转换为日期

时间:2015-05-21 03:39:02

标签: mysql

我从MySQL转换了YEARWEEK()转换值

201439

我想使用MySQL将其转换回该周数的开始日期吗?

e.g。

SELECT xxx('201439');

并返回

'2014-09-16'

4 个答案:

答案 0 :(得分:10)

你需要小心,每周都处于预期的“模式”。 (见https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_week

STR_TO_DATE中使用的格式应该匹配。 (见https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_date-format

e.g。如果使用模式2(1-53,第1周是星期日的第一周,周日从星期日开始)

SELECT STR_TO_DATE(CONCAT('201439',' Sunday'), '%X%V %W');

e.g。如果使用模式3(遵循ISO-8601),(1-53,第1周是第一周,4天或更多天,从星期一开始),则需要使用小写版本。

SELECT STR_TO_DATE(CONCAT('201439',' Monday'), '%x%v %W');

所以,人们会得到以下结果(2014-09-28是星期天):

SELECT yearweek('2014-09-28', 2);
201439
SELECT yearweek('2014-09-28', 3);
201439
SELECT yearweek('2014-09-29', 2);
201439
SELECT yearweek('2014-09-29', 3);
201440

然后

SELECT STR_TO_DATE(CONCAT('201439',' Sunday'), '%X%V %W'); -- mode 2
2014-09-28
SELECT STR_TO_DATE(CONCAT('201439',' Monday'), '%x%v %W'); -- mode 3 
2014-09-22
SELECT STR_TO_DATE(CONCAT('201440',' Monday'), '%x%v %W'); -- mode 3
2014-09-29

答案 1 :(得分:8)

您可以将STR_TO_DATE功能与您需要的format

一起使用

http://sqlfiddle.com/#!9/9eecb7d/2017

SELECT STR_TO_DATE(CONCAT(YEARWEEK(NOW()),' Monday'), '%X%V %W');

SELECT STR_TO_DATE(CONCAT('201439',' Monday'), '%X%V %W');

答案 2 :(得分:0)

尝试:

SELECT DATE(CONCAT(LEFT('201439', 4), '-01-01')) + INTERVAL RIGHT('201439', 2)-1 WEEK

这不会在本周开始,它将在同一天的同一天到达那一年的1月1日。

答案 3 :(得分:-4)

您可以使用此代码,例如:

String string = "January 2, 2010";
DateFormat format = new SimpleDateFormat("MMMM d, yyyy", Locale.ENGLISH);
Date date = format.parse(string);

希望你喜欢它! ^^