Mysql 如何转换字符串';年周刊';有STR_TO_DATE TO a correct DATE吗?

Mysql 如何转换字符串';年周刊';有STR_TO_DATE TO a correct DATE吗?,mysql,date-format,sql-date-functions,Mysql,Date Format,Sql Date Functions,我正在尝试将像201701这样的值转换为2017-01-01,这是2017年第一周的第一天,我已经尝试过了 SELECT STR_TO_DATE('201701', '%Y%v') 因为DATE\u格式(DATE,'%Y%v')的工作原理类似于YEARWEEK()的工作原理,但不是获取相应周的第一天 2017-00-00 这当然不是一个有效的日期。试试这个: SELECT DATE_ADD(MAKEDATE(LEFT(d, 4), 1), INTERVAL RIGH

我正在尝试将像
201701
这样的值转换为
2017-01-01
,这是2017年第一周的第一天,我已经尝试过了

SELECT STR_TO_DATE('201701', '%Y%v')
因为
DATE\u格式(DATE,'%Y%v')
的工作原理类似于
YEARWEEK()
的工作原理,但不是获取相应周的第一天

2017-00-00
这当然不是一个有效的日期。

试试这个:

SELECT 
    DATE_ADD(MAKEDATE(LEFT(d, 4), 1),
        INTERVAL RIGHT(d, 2) - 1 WEEK)
FROM
    (SELECT '201701' d) t

MAKEDATE()
生成一年中的给定日期(在本例中为第一天)。并向其添加周偏移量以获得一周的开始。

如果您以某种方式在脚本下方添加“星期一”,您将获得所需内容(我猜是指指定周的第一天的日期)


注:2017-1-1(星期日)是2016年第52周。2017年1月2日(星期一)是2017年第1周。星期一开始。

如果答案符合您的问题,请投票支持。
SELECT STR_TO_DATE('201701 Monday',
'%X%V %W')
--returns: 2017-01-02