使用 FORMAT 更改日期格式

Changing date format using FORMAT

我的数据库中的日期以 varchars 格式存储:dd/mm/yyyy 例如2015 年 1 月 3 日

我正在尝试将格式更改为 yyyy/mm/dd,以便将它们转换为时间戳。

当我尝试这个时:

SELECT FORMAT (date, 'dd/mm/yyyy', 'yyyy/mm/dd' ) AS t FROM tracker;

它 return 每条记录只有一个数字,恰好是这一天。因此,如果我 运行 在以下日期查询:2/3/2015 和 6/2/2014 那么查询 returns 2 和 6.

我怎样才能使它达到 return 正确的格式?

要以特定格式输出datetime & timestamps,可以使用DATE_FORMAT函数。

它是这样工作的:

SELECT DATE_FORMAT(my_date_field, '%Y-%m-%d %H:%M') FROM my_table

顺便说一句,将格式指定为 '%Y/%m/%d' 将使您的日期字段呈现为 1999/12/31。

要在时间戳中输出日期时间值,请使用函数 UNIX_TIMESTAMP

看来您在这里使用了错误的 MySQL 函数。您正在寻找 STR_TO_DATE() which will convert that date string into a date value which MySQL can work with. You can then use DATE_FORMAT() 将其转换为您选择的新日期字符串。

SELECT DATE_FORMAT(STR_TO_DATE(date, '%d/%m/%Y'), '%Y/%m/%d') AS t FROM tracker;