我正在尝试这个查询:
SELECT ARTICLE_NO,
USERNAME,
ACCESSSTARTS,
ARTICLE_NAME,
date_format( ACCESSSTARTS, '%d %m %Y' ) AS shortDate
FROM AUCTIONS
WHERE upper( ARTICLE_NAME ) LIKE '%hardy%'
LIMIT 0 , 10;
哪个工作正常,但 shortDate 为空,我不确定为什么。
数据库的内容是这样的:
ARTICLE_NO USERNAME ACCESSSTARTS ARTICLE_NAME shortDate
110313660559 banger-wear 17.11.2008 13:24:56 acolshirt NULL
编辑:accessstarts 字段不是日期时间字段而是 varchar。我不确定该怎么做。我是否应该简单地删除 ACCESSSTARTS 中第一个空格后的所有内容以仅显示日期?
或者将列转换为日期时间字段会更好吗?如果是这样,我将如何指定它应该采用 %D.%M.%Y 格式而不是默认格式,默认格式显然以 %Y 开头
最佳答案
ACCESSSTARTS 的格式看起来像您拥有的日期是一个 varchar,但 DATE_FORMAT 需要一个 DATE 或 DATETIME 值。
您可以尝试使用 STR_TO_DATE首先将该字符串转换为日期值,例如
SELECT
ACCESSSTARTS,
date_format(str_to_date(ACCESSSTARTS, '%d.%m.%Y %k:%i:%s'), '%d %m %Y' ) AS shortDate
FROM AUCTIONS
WHERE upper( ARTICLE_NAME ) LIKE '%hardy%'
LIMIT 0 , 10;
关于sql - mysql格式化日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/507063/