Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MYSQL按日期订购,带有日期\格式_Mysql_Sql - Fatal编程技术网

MYSQL按日期订购,带有日期\格式

MYSQL按日期订购,带有日期\格式,mysql,sql,Mysql,Sql,我有一个日期类型的列(startdate) 我使用DATE_格式从查询中获取“XX月,XXXX”结果 但当我按日期排序时,会按字母顺序排序。。。如何按时间顺序排列日期 当我按顺序调用startdate列时,是否可以对其进行不同的格式设置,以便按时间顺序排序 这是一个问题 SELECT location, course, DATE_FORMAT( startdate, '%M %D, %Y' ) AS startdate FROM `courses` c LEFT JOIN `

我有一个日期类型的列(
startdate

我使用DATE_格式从查询中获取“XX月,XXXX”结果

但当我按日期排序时,会按字母顺序排序。。。如何按时间顺序排列日期

当我按顺序调用startdate列时,是否可以对其进行不同的格式设置,以便按时间顺序排序

这是一个问题

SELECT location, course, DATE_FORMAT( startdate, '%M %D, %Y' ) AS startdate 
    FROM `courses` c 
    LEFT JOIN `locdate` l ON c.id = l.id 
    ORDER BY startdate ASC 
    LIMIT 0, 10

不要按格式化字符串版本排序。它的格式不允许这种排序,因为它不是在最重要的组件中首先排序。按实际日期字段排序,该字段自然会按正确顺序排序

如果您的日期是
yyyy-mm-dd
格式,那么它自然会按字符串排序

SELECT ...   DATE_FORMAT(...) AS formatted    ... ORDER BY `startdate` ASC
                                 ^^^^^^^^--different alias   ^^^^^^---actual field

可以使用别名执行此操作。我不得不猜测这些专栏是从哪里来的,但这里有一个尝试:

SELECT l.location, c.course, DATE_FORMAT(l.startdate, '%M %D, %Y' ) AS startdate 
FROM `courses` c 
LEFT JOIN `locdate` l ON c.id = l.id 
ORDER BY l.startdate ASC 
LIMIT 0, 10;

通过使用表别名,它知道如何使用表列中的版本。

我刚刚遇到这个问题,但这里是我的解决方案。 将日期格式化,然后添加一个额外的列

$query = "SELECT `StartDate` as datesort,DATE_FORMAT(`StartDate`,'%d %M %Y') as Date, FROM `courses`";
我正在使用
StartDate
并将其别名为datesort。然后我使用datesort进行排序。这样我可以保持StartDate的格式,并使用datesort进行排序


这是一个恼人的问题,但我的方法将其排序(忽略双关语)。

正如@Marc回答的那样,
按l.startdate ASC排序可以,但是将
DATE\u格式(l.startdate,'%M%D,%Y')更改为startdate
DATE\u格式(l.startdate,'%M%D,%Y')更改为startdate\MDY
并且在脚本中使用
startdate
,改用
startdate\u MDY