SQL - ORDER BY'datetime'DESC

时间:2014-07-04 05:31:21

标签: 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

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

2014-04-30 11:55:11
2014-07-01 12:25:40
2014-07-02 12:28:03

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

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

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


(17年6月11日)

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

3 个答案:

答案 0 :(得分:13)

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

    所以你的查询看起来像:

    LIMIT

答案 1 :(得分:3)

尝试:

SELECT post_datetime 
FROM post 
WHERE type = 'published' 
ORDER BY post_datetime DESC 
LIMIT 3

答案 2 :(得分:2)

删除引号:

是:

ORDER BY = 'post_datetime DESC' AND LIMIT = '3'

应该是:

ORDER BY post_datetime DESC LIMIT 3