首页 > 解决方案 > 将字符串转换为日期格式并检索周数

问题描述

我有格式的日期15-Nov-20。我想在将数据插入表之前使用查询将其转换为 MySQL 表的日期格式(yyyy-mm-dd),并希望分别获取该日期的周和年。我尝试了以下查询:

SELECT  STR_TO_DATE('15-Nov-20', '%Y-%m-%d') FROM table

但这会返回NULL

标签: mysqlstringdate

解决方案


您的格式字符串不正确(请参阅手册)。对于您的示例数据,它应该是%d-%M-%y例如

SELECT  STR_TO_DATE('15-Nov-20', '%d-%M-%y')

输出:

2020-11-15

然后获取年份和星期,您可以使用,或取决于您的需要DATE_FORMAT之一(请参阅手册了解它们的定义),例如%U%u%V%v

SELECT DATE_FORMAT(STR_TO_DATE('15-Nov-20', '%d-%M-%y'), '%Y-%U')

输出

2020-46

请注意,如果您使用%Vor%v表示周数,您还必须使用%Xor%x表示年份,例如

SELECT DATE_FORMAT(STR_TO_DATE('15-Nov-20', '%d-%M-%y'), '%X-%V')

输出

2020-46

dbfiddle 上的演示


推荐阅读