SQL - ORDER BY'datetime'DESC

Sup*_*Cat 9 mysql sql datetime

我有几个值存储在我的数据库中作为DATETIME数据类型(YYYY-MM-DD HH:MM:SS),我一直在尝试按降序排列 - 最大的至少(在日期的情况下 - 最新的但是,奇怪的是,它似乎完全忽略了DESC运算符的存在.

SQL查询(缩写):

SELECT post_datetime FROM post WHERE type=`published` ORDER BY post_datetime DESC LIMIT 3
Run Code Online (Sandbox Code Playgroud)

然后,他们按此顺序打印:

2014-04-30 11:55:11
2014-07-01 12:25:40
2014-07-02 12:28:03
Run Code Online (Sandbox Code Playgroud)

(那些恰好是数据库中"最早的"日期条目)

解?我会注意到在其他东西上使用DESC(例如正常数字)也不起作用.我检查了我的语法,试过引号,没有引号,双引号等.

(注意 - 几个小时后我将无法回答任何其他问题,但是一旦我回来,我会尽力回复)


(17年6月11日)

编辑:为了澄清,对于未来的读者,语法拼写错误与问题无关,并且在输入示例时是我的错误.我一直在使用自制查询构建器,以至于我当时忘记了正确的语法.问题在于我的程序逻辑 - 而不是查询.以上示例已经过编辑,对于任何想要执行上述任务的人来说都是正确的解决方案.对不起,这已被观看超过5万次...但现在你知道了.

Uri*_*iil 15

  1. 对字符串使用单引号
  2. 不要在表名周围加上单引号(使用`代替)
  3. 不要在数字周围加单引号(你可以,但它更难阅读)
  4. 不要放在和AND之间ORDER BYLIMIT
  5. 不要把=之间ORDER BY,LIMIT关键词和条件

所以你的查询看起来像:

SELECT post_datetime 
FROM post 
WHERE type = 'published' 
ORDER BY post_datetime DESC 
LIMIT 3
Run Code Online (Sandbox Code Playgroud)


pan*_*her 3

尝试:

SELECT post_datetime 
FROM post 
WHERE type = 'published' 
ORDER BY post_datetime DESC 
LIMIT 3
Run Code Online (Sandbox Code Playgroud)