我正在尝试将201701
等值转换为2017-01-01
这是2017年第一周的第一天,我试过这个
SELECT STR_TO_DATE('201701', '%Y%v')
因为DATE_FORMAT(DATE, '%Y%v')
的工作方式与YEARWEEK()
类似,但我没有获得相应周的第一天
2017-00-00
当然不是有效的日期。
答案 0 :(得分:0)
试试这个:
SELECT
DATE_ADD(MAKEDATE(LEFT(d, 4), 1),
INTERVAL RIGHT(d, 2) - 1 WEEK)
FROM
(SELECT '201701' d) t
MAKEDATE()
生成一年中的某一天(在这种情况下为第1天)。并为它添加周数抵消以获得一周的开始。
答案 1 :(得分:0)
如果您以某种方式将“星期一”添加到脚本下方,我会得到您要查找的内容(指定周的第一天的日期)。
SELECT STR_TO_DATE('201701 Monday',
'%X%V %W')
--returns: 2017-01-02
PS:2017-1-1(星期日)是2016年第52周.2017-1-2(星期一)是2017年第1周。周从星期一开始。