gpt4 book ai didi

MySQL DATE_FORMAT 没有以正确的顺序输出日期

转载 作者:太空宇宙 更新时间:2023-11-03 10:51:04 25 4
gpt4 key购买 nike

我试图按日期升序排列日期和时间表,然后按开始时间升序排列,但我的日期列表显示的顺序不正确。不过,开始时间列表似乎确实有效。

顺序应显示为 18/08/2014 然后 19/08/2014 然后 20/08/2014 然后 .... 01/09/2014 然后 02/09/2014 ... 等的所有条目, 16/09/2014 是最后一个条目。

注意:我已将日期和开始时间分别作为 VARCHAR 存储在我的 MySQL 表中,现在不/不能更改它。每个日期都遵循 dd/mm/yyyy(英国英语)格式。

任何人都可以帮助我指出我遗漏的内容吗?

表“schedule”的表设置

date         VARCHAR(255)
start_time VARCHAR(255)

MySQL查询

SELECT * FROM schedule WHERE username='".$_SESSION['username']."' ORDER BY DATE_FORMAT(date, '%d/%m/%Y') ASC, start_time ASC

表格输出

Date        Start time  End time
16/09/2014
18/08/2014 10:00 16:00
21/08/2014 10:00 12:00
28/08/2014 10:00 12:00
10/09/2014 10:00 12:00
11/09/2014 10:00 12:00
12/09/2014 10:00 12:00
21/08/2014 13:00 15:00
28/08/2014 13:00 15:00
10/09/2014 13:00 15:00
11/09/2014 13:00 15:00
12/09/2014 13:00 15:00
01/09/2014 15:00 15:30
28/08/2014 15:00 15:30
21/08/2014 15:00 15:30
02/09/2014 15:00 15:30
03/09/2014 15:00 15:30
04/09/2014 15:00 15:30
05/09/2014 15:00 15:30
08/09/2014 15:00 15:30
09/09/2014 15:00 15:30
10/09/2014 15:00 15:30
11/09/2014 15:00 15:30
12/09/2014 15:00 15:30
15/09/2014 15:00 15:30
16/09/2014 15:00 15:30
21/08/2014 16:00
10/09/2014 16:00
11/09/2014 16:00

非常感谢任何帮助!

最佳答案

首先,我会重新审视将任何日期或时间存储为字符串的想法。它会导致这种问题。

MySQL 实际上无论如何都将日期视为字符串,并添加了日期功能......并以更合理的 %Y-%m-%d 格式存储它们,从而产生正确的顺序。

如果您绝对不能更改数据库.. 联系可以的人或运行您的查询:

  SELECT * 
FROM schedule
WHERE username='".$_SESSION['username']."'
ORDER BY STR_TO_DATE(date, '%d/%m/%Y') ASC, start_time ASC

DATE_FORMAT 将日期转换为指定的字符串格式。在您的情况下,它隐式地将您的字符串转换为日期(因为它被传递到函数中),然后将其格式化回其原始格式..因此您看到的顺序。

关于MySQL DATE_FORMAT 没有以正确的顺序输出日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25081649/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com