mysql - 无法处理数据库中存储的日期、日期格式、选择不同和排序方式

标签 mysql sql

我有一个 MySQL 数据库,其中一个表包含一列 (VARCHAR),该列的日期以这种格式存储:d.m.Y(即 09.11.2019)。

我需要读出不同的日期,限制 10 个,最新日期。

我尝试了这段代码,但它只按 d 排序,而不是 m 或 Y。

SELECT DISTINCT date FROM tbl ORDER BY date DESC LIMIT 10

最佳答案

您可以使用 mysql date function str_to_date() 将日期字符串转换为日期:

select distinct date from tbl order by str_to_date(date, '%d.%m.%Y') desc limit 10

格式说明符:

  • %d:一月中的某一天,数字 (01..31)
  • %m:月份,数字 (01..12)
  • %Y:年份,数字,四位数字

注意:一般来说,始终使用类似日期的数据类型(datedatetime)来表示数据库中的日期。将日期存储为字符串会在很多方面困扰您。

关于mysql - 无法处理数据库中存储的日期、日期格式、选择不同和排序方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58782653/

相关文章:

MYSQL COUNT(column) 意外返回多行

sql - 阻止 BigQuery 截断输出

mysql - 如何仅合并多个表中的一列?

mysql - 形成 SQL 查询

sql - 如何强制 MS Access 保留其 SQL 格式?

php - Laravel - 如何使用查询生成器或 Eloquent 添加 JOIN 和 CASE-WHEN?

sql - 发现MySql存在弱逃逸功能,如何利用?

mysql - 使用 DATETIME 列上的 ORDER BY 优化查询

MySQL 查询 : Get new customers in the month

java - 将用户已输入的数据插入mysql(java)