3

我在旧数据库中存储了一个每周度量的日期,作为具有以下格式的字符串:

2010 10这是%Y %U格式的工匠(即年份后跟周数)

所以我尝试通过做将它反转为日期时间列, STR_TO_DATE(time_week, '%Y %U')但它似乎不理解周格式

当我对硬编码字符串进行测试时,它也不起作用

mysql> select str_to_date('2015 01', '%Y %U');
+---------------------------------+
| str_to_date('2015 01', '%Y %U') |
+---------------------------------+
| 2015-00-00                      |
+---------------------------------+


mysql> select str_to_date('2015 20', '%Y %U');
+---------------------------------+
| str_to_date('2015 20', '%Y %U') |
+---------------------------------+
| 2015-00-00                      |
+---------------------------------+

我当然想念房间里的大象,但我看不出是什么。

4

2 回答 2

1

您不能使用 format"%X%V"year-week字符串转换为日期,因为如果周跨越月边界,则年和周的组合不能唯一标识年和月。要将 a 转换year-week为日期,您还应该指定weekday

这是一个例子

select str_to_date('2015 20 Friday', '%X%V %W');

编辑:更改'%Y %U''%X%V %W'

于 2016-02-18T17:24:43.030 回答
1

在您的日期中,缺少日期,因此您应该在秋季的第一天添加任何day日期。使用 concat 函数添加日期

CONCAT('2015 01', ' Sunday');

在此之后,您应该使用该函数STR_TO_DATE()并且日期格式应该是'%X %V %W'上述日期(之后CONCAT()

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

输出是2015-01-04

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

输出是2015-05-17

我希望这能帮到您。 这篇文章类似于你的问题。

于 2016-02-18T17:39:56.780 回答