sql - mysql格式化日期

标签 sql mysql

我正在尝试这个查询:

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/

相关文章:

MySQL 在公共(public)列上连接多个表,没有重要性顺序

mysql - DigitalOcean 上的 NodeJs 无法连接到 Amazon RDS 上的 MySQL 数据库

php - WooCommerce 中的分页

mysql - 是或否作为没有使用 IF 或 CASE 的 sql 查询的结果

mysql - 数据库触发器是如何在 SQL 数据库引擎中实现的?

sql - SQL SELECT 中的 bool 逻辑

mysql - 如何找到表中具有满足特定条件的列的最大条目数?

php - 我如何在 php mysql 的 html 内容中使用特殊字符

mysql - 将SQL文件导入mysql

mysql - SQL语句where in不起作用