我从MySQL转换了YEARWEEK()转换值
201439
我想使用MySQL将其转换回该周数的开始日期吗?
e.g。
SELECT xxx('201439');
并返回
'2014-09-16'
答案 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);
希望你喜欢它! ^^