【问题标题】:MySQL DATE_FORMAT()MySQL DATE_FORMAT()
【发布时间】:2013-08-11 07:39:47
【问题描述】:

我正在尝试使用 MySQL DATE_FORMAT 格式化日期。我的查询是

SELECT first_name, middle_name, last_name, DATE_FORMAT(added_date,'%d/%m/%Y') AS AddDate
FROM profiles.

added_date 是配置文件表上的日期字段,当我运行该查询时,它会为 AddDate 带来 Null,任何建议。

谢谢。

【问题讨论】:

  • added_date 是存储为日期还是 INT?
  • added_date 列的类型是什么,如果没有格式化,会显示什么?我假设此列对于所有配置文件都不为空? ;)

标签: mysql date


【解决方案1】:

根据您的 cmets,您可能正在寻找这个

SELECT first_name, middle_name, last_name, 
       DATE_FORMAT(STR_TO_DATE(added_date, '%d-%m-%Y %h:%i:%s %p'),'%d/%m/%Y') AS AddDate
FROM profiles

样本输出:

| FIRST_NAME | MIDDLE_NAME | LAST_NAME |添加日期 | -------------------------------------------------- --- |约翰 | (空) |能源部 | 2013 年 11 月 8 日 |

这里是SQLFiddle演示

【讨论】:

  • 还是一样,好诡异
  • added_date的数据类型是什么?请发帖DESC profiles
【解决方案2】:

如果您将其存储为 INT,您可能需要使用 FROM_UNIXTIME()

SELECT 
  first_name, 
  middle_name, 
  last_name, 
  DATE_FORMAT(FROM_UNIXTIME(added_date),'%d/%m/%Y') AS AddDate
FROM 
  profiles

【讨论】:

  • 但是在您的问题中您提到 added_date 是 Date 字段,FROM_UNIXTIME() 用于 Int。 :(
  • 我的数据类型是 Varchar() 当我运行你的代码时它显示 01/01/1970 我意识到数据类型是这个问题的问题,要么我必须修改表。
【解决方案3】:

尝试使用STR_TO_DATE():-

SELECT first_name, middle_name, last_name, DATE_FORMAT(STR_TO_DATE(added_date, '%d-%m-%Y %h:%i:%s A'),'%d/%m/%Y') AS AddDate
FROM profiles

【讨论】:

    【解决方案4】:

    查找已编辑的查询

        SELECT first_name, middle_name, last_name, 
        DATE_FORMAT(STR_TO_DATE(added_date, '%d-%m-%Y %h:%i:%s A'),'%d/%m/%Y') AS AddDate
        FROM profiles
    

    Reference question link

    【讨论】:

    • 还是不行,我来告诉你我想完成什么。那个 added_date 现在是这种格式 11-08-2013 09:02:25 AM,我只想显示 11/08/2013。我该如何格式化。
    猜你喜欢
    • 2023-03-30
    • 1970-01-01
    • 2013-01-10
    • 1970-01-01
    • 2011-03-23
    • 2013-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多