【问题标题】:MySQL DATE_FORMAT "%d" issueMySQL DATE_FORMAT“%d”问题
【发布时间】:2021-03-05 10:03:34
【问题描述】:

我确定这是有逻辑的,但我不明白

date_format(date, '%m.%d.%Y') // Output: 03.05.2021
date_format(date, '%D.%m.%Y') // Output: 5th.03.2021
date_format(date, '%e.%m.%Y') // Output: 5.03.2021

但是

date_format(date, '%d.%m.%Y') // Output: 28.02.2021 

当我以“%d”开始 date_format 时似乎存在问题,但我需要输出为 05.03.2021(即 2021 年 3 月 5 日),但我无法实现。有人可以向我解释这个逻辑并帮助我吗?

更新说明:在我的数据库中,我有 2021 年 3 月 5 日至 2021 年 2 月 17 日的数据,所以当我使用 date_format(date_column, '%d.%m.%Y') 从表中选择时,并按 date_column desc 排序,表格从 28.02.2021 开始,而不是 05.03.2021

【问题讨论】:

  • 您是否检查了 date 中的实际内容。因为否则 www 将因日期混乱而崩溃:)
  • 试试select date_format('2021-03-05', '%d.%m.%Y'); 这样你就知道你实际上是在格式化哪个日期

标签: mysql phpmyadmin


【解决方案1】:

您需要将存储为字符串的日期转换为有效的mysql日期,yyyy-mm-dd,例如按顺序

SELECT *
from  table 
order by str_to_date(date_column,'%d.%m.%Y') desc

您可以通过提供样本更清楚地了解您的数据是如何存储的

【讨论】:

    【解决方案2】:

    您的第三个示例使用%e。将其更改为 %d 将为您提供所需的格式。

    如果该值作为 DATE、DATETIME 或 TIMESTAMP 存储在数据库中,则按该值排序将为您提供所需的内容: SELECT DATE_FORMAT(date_column, '%d.%m.%Y') AS formatted_date FROM table ORDER BY date_column DESC

    注意通过formatted_date 订购不会给出您想要的顺序,因为它只是一个文本字符串,而不是 DATE 或类似的。

    如果该值未作为 DATE 或类似值存储在数据库中,那么 P.Salmon 的建议就是您想要的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-06
      • 1970-01-01
      • 2020-11-27
      • 2023-03-30
      • 1970-01-01
      • 2013-01-10
      相关资源
      最近更新 更多