Mysql str_to_date 显示 null 而不是格式化日期

Mysql str_to_date shows null instead of formatted date

我在将日期时间列转换为 y-m-d 格式时遇到了一个愚蠢的问题。

我正在运行以下查询:

SELECT STR_TO_DATE(dateadded, '%y-%m-%d') FROM my_table

注意:dateadded 列是一种日期时间。

每当我运行上述查询时,它总是显示 (NULL)。

谁能解决这个问题,因为这让我很恼火?

由于您的列是日期时间类型而不是字符串类型,您应该使用 DATE_FORMAT 函数,如下所示:

SELECT DATE_FORMAT(dateadded, '%y-%m-%d') 
FROM my_table

此查询适用于 table

中的四位数年份
SELECT STR_TO_DATE(dateadded, '%Y-%m-%d') 
FROM my_table

虽然这将适用于两位数的年份

SELECT STR_TO_DATE(dateadded, '%y-%m-%d') 
FROM my_table

您可以通过以下查询来尝试此操作

SELECT 
   STR_TO_DATE('99-12-12', '%y-%m-%dd'),
   STR_TO_DATE('1999-12-12', '%Y-%m-%dd')

两个输出都是

1999-12-12

for further details