在 MySQL 中将字符串转换为日期格式
 
本文将指导你并通过不同的函数将充当 DATE 的字符串类型值转换为 DATE 类型值。我们还将练习使用 MySQL 中的 STR_TO_DATE()、CONVERT() 和 CAST() 函数的一些示例代码。
在 MySQL 中将字符串转换为日期格式
我们将学习以下在 MySQL 中将字符串转换为 DATE 格式的方法。
MySQL STR_TO_DATE() 函数
此函数将 str(字符串)转换为 DATE 值。DATE 的格式将根据你的字符串格式。例如,你想将 MM/DD/YYYY 从字符串类型转换为 DATE 类型,那么 DATE 也将是 MM/DD/YYYY 格式。
STR_TO_DATE() 函数可以根据输入以及字符串格式返回 DATE、DATETIME 或 TIME 值。请参阅下面给出的示例并将它们与输出进行比较。
SELECT STR_TO_DATE('2021-08-23', '%Y-%m-%d');
输出:

如果我们改变格式怎么办?让我们用逗号替换破折号。
SELECT STR_TO_DATE('2021-08-23', '%Y,%m,%d');
输出:

参见上面给出的输出,它返回 NULL。让我们仅将格式从 YYYY-MM-DD 更改为 DD-MM-YYYY。
SELECT STR_TO_DATE('2021-08-23', '%d-%m-%Y');
输出:

看,它又返回了 NULL。这意味着你必须具有与输入字符串中相同的 DATE 格式。如果我们也有 TIME 怎么办?让我们运行以下命令。
SELECT STR_TO_DATE('2021-08-23 10:12:23', '%Y-%m-%d %T');
输出:

STR_TO_DATE() 函数将忽略文本并仅输出 DATE。请参阅以下示例。
SELECT STR_TO_DATE('2021-08-23 some other string', '%Y-%m-%d') as Date;
输出:

我们也可以提取年份。如果你提取年份,它会将日期和月份设置为零。请参阅以下代码和输出。
SELECT STR_TO_DATE('2021-08-23', '%Y') as Year; #get year
输出:

MySQL CONVERT() 函数
Convert 函数可以将给定的值转换为指定的字符集或数据类型。你可以在此处查看有关数据类型的详细信息。
SELECT CONVERT("2021-08-19", DATE); #convert to DATE
SELECT CONVERT("2021-08-19", DATETIME); #convert to DATETIME
SELECT CONVERT("2021-08-19", TIME); #convert to TIME
输出:

MySQL CAST() 函数
此函数将任何类型的输入(可以是字符串、整数或其他)转换为任何指定的数据类型。你可以在此处详细查看参数值。
SELECT CAST("2021-08-29" AS DATE) as date; #convert to date type
SELECT CAST("2021-08-29 11:12:45" AS DATETIME) as datetime; #convert to datetime type
SELECT CAST("11:12:45" AS TIME) as time; #convert to time type
输出:

结论
我们得出的结论是,根据项目要求,可以有多种方法将字符串值转换为 DATE、TIME 和 DATETIME。我们了解了用于转换目的的 STR_TO_DATE、CONVERT 和 CAST 函数。
