【问题标题】:How to use %U in str_to_date for MySQL如何在 MySQL 的 str_to_date 中使用 %U
【发布时间】:2016-05-30 23:40:57
【问题描述】:

我在旧数据库中以字符串形式存储了每周度量的日期,格式如下:

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                      |
+---------------------------------+

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

【问题讨论】:

  • 在您的日期 ('2015 01' ) 中没有这种格式的任何一天,所以如何从 str_to_date 函数中获取任何日期

标签: mysql str-to-date


【解决方案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

我希望这会对你有所帮助。 this 与您的问题类似的帖子。

【讨论】:

    【解决方案2】:

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

    这是一个例子

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-01-02
      • 2013-07-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-25
      • 2015-01-20
      相关资源
      最近更新 更多