MySQL DATE_FORMAT()

6

我正在尝试使用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,有什么建议吗。

谢谢。


添加日期是以日期还是整数的形式存储的? - Jared
添加日期列的类型是什么,如果您获取未格式化的值,会显示什么?我假设此列对于所有配置文件都不为空? ;) - Wirus
4个回答

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是日期字段,而FROM_UNIXTIME()函数是用于整数的。:( - Rahul Tripathi
我的数据类型是Varchar()。当我运行你的代码时,它显示01/01/1970。我意识到数据类型是这个问题的原因,我要么必须修改表格。 - user1554459

2
根据您的评论,您可能正在寻找以下内容:
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 |    ADDDATE |
-----------------------------------------------------
|       Jhon |      (null) |       Doe | 11/08/2013 |

这里是 SQLFiddle 演示。


注意:本文为技术翻译,保留了原始HTML标签。

还是一样的,太奇怪了。 - user1554459
1
added_date 的数据类型是什么?请发布 DESC profiles - peterm

0
尝试使用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

0

查找已编辑的查询

    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

参考问题链接


还是不行,让我告诉你我想要实现什么。现在的 added_date 格式是 11-08-2013 09:02:25 AM,我只想显示成 11/08/2013。我该如何进行格式化呢? - user1554459

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