在MySQL中转换日期

5

我有一个MySQL数据库中的列,其中包含如下形式的日期:

Tue Oct 25 2016。我试图将其转换为 10/25/2016 的格式。

我进行了一些研究,并尝试了以下方法:

SELECT DATE_FORMAT(Date, '%d/%m/%Y') FROM table;

但它返回了null

任何帮助都将不胜感激。


1
你的日期列是什么类型? - Maksym Fedorov
你的日期列是什么类型的?@MaximFedorov,我认为当我看到格式为 Tue Oct 25 2016 时,它是字符串类型 varcharchar 中的一种。 - Raymond Nijland
日期列的数据类型是文本。我应该将其改为其他类型吗?感谢您的帮助。我是拿到了这个数据集,所以在必要之前我不想更改任何内容。看起来现在我可能需要更改了。 - miltonjbradley
1
日期列的数据类型是文本。我应该将其更改为其他类型吗?是的,因为TEXT与表数据分开存储,并且每个记录需要额外的随机磁盘I/O(意味着在普通HDD磁盘上需要额外4-6毫秒的时间)才能获取TEXT列,至少在InnoDB引擎中是这样的。此外,您应该选择最适合日期数据的MySQL数据类型,这就是DATE数据类型。 - Raymond Nijland
1个回答

10
首先,您需要使用STR_TO_DATE函数将日期字符串转换为MySQL date格式('YYYY-MM-DD'),以便从字符串转换,我们必须指定当前日期字符串的格式。在您的情况下,它是'%a %b %d %Y'。请注意,在格式说明符字符之前需要%字符。

详细信息:

  • %a 缩写的星期几名称(Sun到Sat)
  • %b 缩写的月份名称(Jan到Dec)
  • %d 作为数字值的月中日期(01到31)
  • %Y 数字值的年份,4位数

现在,您可以利用DATE_FORMAT函数将MySQL日期转换为所需的日期字符串格式。在您的情况下,它将是:'%m/%d/%Y'

详细信息:

  • %d 表示月份中的日期,数字表示(01到31)
  • %m 表示月份,数字表示(00到12)
  • %Y 表示年份,4位数字表示

请尝试以下查询:

SELECT DATE_FORMAT(STR_TO_DATE(Date, '%a %b %d %Y'), '%m/%d/%Y') 
FROM table;

可以在此处查看可用格式说明符的完整列表:https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html#function_date-format


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接