我有一个日期列,其格式如下:28-15
。
这个格式是第一个数字告诉哪一周,第二个数字告诉哪一年。
我尝试使用str_to_date(datecolumn, '%v-%y')
但效果不佳。
它按照正确的顺序对列表进行排序。
我还尝试连接日期列以使字符串显示如下:
01-28-15
(首先是一周中的某一天)并使用str_to_date(datecolumn, '%w-%v-%y)
,但没有运气。
我做错了什么?
答案 0 :(得分:1)
来自MySql docs:
您无法使用格式“%X%V”将年周字符串转换为日期 因为一年和一周的组合不能唯一识别 如果一周跨越一个月的边界,则为一年零一个月。转换一个 年 - 星期至日期,您还应指定工作日:
SELECT STR_TO_DATE('200442 Monday', '%X%V %W');
对于你的情况,你需要做出关于工作日(例如星期一)和世纪(例如2000)的假设,然后你可以通过下一个方式获得日期:
SELECT DATE_ADD(STR_TO_DATE(CONCAT(datecolumn, ' ', 'Monday'), '%V-%X %W'), INTERVAL 2000 YEAR)