Mysql 将字符串转换为日期格式并检索周数

Mysql 将字符串转换为日期格式并检索周数,mysql,string,date,Mysql,String,Date,我有格式为20年11月15日的日期。在将数据插入表之前,我想使用查询将其转换为MySQL表的日期格式(yyyy-mm-dd),并分别获取该日期的周和年。我尝试了以下查询: SELECT STR_TO_DATE('15-Nov-20', '%Y-%m-%d') FROM table 但这将返回NULL 您的格式字符串不正确(请参阅)。对于示例数据,它应该是%d-%M-%y,例如 SELECT STR_TO_DATE('15-Nov-20', '%d-%M-%y') 输出: 2020-11-

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

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

但这将返回
NULL

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

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

2020-11-15
然后,要获取年份和周,您可以使用
DATE\U格式
%U
%U
%V
%V
中的一种格式,具体取决于您的需要(有关其定义,请参见)

输出

2020-46
2020-46
请注意,如果您对周数使用
%V
%V
,您还必须对年份使用
%X
%X
,例如

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

2020-46
2020-46

您还可以使用PHP的DateTime类获取周数和年数

$parsedDate = new DateTime('15-Nov-20');
$week = $parsedDate->format("W");
echo 'Weeknumber:' . $week;
echo '<br>';
$year = $parsedDate->format("Y");
echo 'Year:' . $year;