我在遗留数据库中将每周指标的日期存储为具有以下格式的字符串:
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 |
+---------------------------------+
我当然错过了房间里的大象,但我看不到什么。
最佳答案
在您的日期中,缺少日期,因此您应该在日期中添加任何 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发布与您的问题类似的帖子。
关于mysql - 如何在 MySQL 的 str_to_date 中使用 %U,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35487696/