web-dev-qa-db-fra.com

SQL - ORDER BY 'datetime' DESC

J'ai plusieurs valeurs stockées dans ma base de données en tant que type de données DATETIME (YYYY-MM-DD HH: MM: SS), et j'ai essayé de les obtenir dans un ordre décroissant - Du plus grand au moins (dans le cas des dates - Du plus récent au plus ancien), cependant, curieusement, il semble ignorer complètement l'existence de l'opérateur DESC .

La requête SQL (abrégée):

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

Et à partir de cela, ils impriment dans cet ordre:

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

(Il se trouve que ce sont aussi les entrées de date "les plus anciennes" dans la base de données)

Solution? Je noterai que l'utilisation de DESC sur d'autres choses (comme les nombres normaux) ne fonctionne pas non plus. J'ai vérifié ma syntaxe, essayé des guillemets, pas de guillemets, des guillemets doubles, etc.

( Remarque - Je ne serai pas en mesure de répondre à d'autres questions pendant plusieurs heures, mais je ferai de mon mieux pour répondre une fois de retour)


(6/11/17)

Edit: Pour clarifier, pour les futurs lecteurs, la faute de frappe de syntaxe n'était pas liée au problème et était une erreur de ma part lors de la saisie d'un exemple. J'avais utilisé un constructeur de requêtes maison pendant si longtemps que j'avais oublié la syntaxe appropriée à l'époque. Le problème se situait dans la logique de mon programme - pas dans la requête. L'exemple ci-dessus a été modifié et est la bonne solution pour quiconque cherche à effectuer la tâche mentionnée. Je suis désolé que cela ait été vu plus de 50 000 fois ... mais maintenant vous savez.

8
Super Cat
  1. utiliser des guillemets simples pour les chaînes
  2. nE placez PAS de guillemets simples autour des noms de table (utilisez `à la place)
  3. ne mettez PAS de guillemets simples autour des chiffres (vous pouvez, mais c'est plus difficile à lire)
  4. ne mettez PAS AND entre ORDER BY et LIMIT
  5. ne met pas = entre ORDER BY, LIMIT mots-clés et condition

Ainsi, votre requête ressemblera à:

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

Essayer:

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

Supprimez les citations ici:

est:

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

Devrait être:

ORDER BY post_datetime DESC LIMIT 3
2
Jens