62 votes

comparaison date-heure mysql

Par exemple, la requête suivante fonctionne bien:

 SELECT * 
  FROM quotes 
 WHERE expires_at <= '2010-10-15 10:00:00';
 

Mais il s’agit évidemment d’une comparaison «chaîne» - je me demandais s’il existait une fonction intégrée à MySQL qui effectue spécifiquement des comparaisons «datetime».

116voto

OMG Ponies Points 144785

...c'est évidemment de l'exécution d'une "chaîne" de comparaison

Non - si la date/heure format correspond au format pris en charge, MySQL effectue la conversion implicite de convertir la valeur DATETIME, basé sur la colonne, il est comparé. La même chose arrive avec:

WHERE int_column = '1'

...où la chaîne de valeur de "1" est converti en un Entier, car int_columns'type de données est de type INT, pas de CHAR/VARCHAR/TEXTE.

Si vous voulez convertir explicitement la chaîne DATETIME, le STR_TO_DATE fonction serait le meilleur choix:

WHERE expires_at <= STR_TO_DATE('2010-10-15 10:00:00', '%Y-%m-%d %H:%i:%s')

21voto

Pekka 웃 Points 249607

Mais c'est évidemment l'exécution d'une "chaîne" de comparaison

Pas de. La chaîne sera automatiquement converti en une valeur de type DATETIME.

Voir 11.2. La Conversion de Type dans l'Évaluation de l'Expression.

Lorsqu'un opérateur est utilisé avec des opérandes de types différents, type de conversion se produit pour rendre les opérandes compatible. Certaines conversions se produisent de façon implicite. Par exemple, MySQL convertit automatiquement les numéros de chaînes en tant que de besoin, et vice versa.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X