Maison >base de données >tutoriel mysql >MySQL peut-il comparer le temps ?
La comparaison du temps peut être implémentée dans MySQL, avec des instructions telles que [ SELECT testdate FROM t1 WHERE testdate >= '2018-09-12';SELECT testdate FROM t1 WHERE testdate >= 20180912;].
Récemment, j'ai constaté que je comparais les dates de manière incorrecte. Par exemple, dans l'instruction suivante, le champ a est une colonne de type DATETIME :
select a from t1 where DATEDIFF(a, '2018-09-11') < 0;
Cette instruction permet de rechercher tous les enregistrements antérieurs à la date du 11/09/2018, mais il y a un problème avec cette instruction. Si le champ a est indexé, l'utilisation de ce type pour la comparaison de dates entraînera la requête. de ne pas utiliser l'index. Cela réduit les performances des requêtes.
Cours recommandé : Tutoriel MySQL.
Lisez la documentation de Mysql sur la comparaison des champs de date. Lors de la comparaison de dates, MySQL convertira automatiquement la date en nombre à des fins de comparaison. Après la condition Where, lors de l'utilisation de dates au format chaîne pour comparer avec les champs de type DATE, DATETIME, TIMESTAMP et TIME, les exigences en matière de format de chaîne ne sont pas strictes. Vous pouvez utiliser n'importe quel délimiteur de format pour représenter la date, tel que « 2018-09-. 11", "2018#09#11", "2018&09&11" sont toutes les mêmes dates pour MySQL. S'il n'y a pas de délimiteur, tel que « 20180911 », c'est la même chose que « 2018-09-11 » ou d'autres dates avec délimiteurs. Par exemple, l'image ci-dessous
select a from t1 where a 5c3ed7989d63ae9268d6b01ca95097bc, >=, 2139279bab03282bc711af9449712acc= '2018-09-12'; SELECT testdate FROM t1 WHERE testdate >= 20180912; SELECT MOD(testdate,100) FROM t1 WHERE testdate >= 20180912; SELECT testdate FROM t1 WHERE testdate >= '20180912';
Mysql permet de stocker "0000-00-00" comme valeur "0" de type DATE, également appelée date virtuelle. Dans certains scénarios, cela est plus pratique que de stocker des valeurs NULL. Si une valeur de date illégale est enregistrée dans un champ de type DATE, MySQL la stocke par défaut sous le nom "0000-00-00". Si le stockage des valeurs "0" n'est pas autorisé, activez le paramètre NO_ZERO_DATE.
Vous pouvez également utiliser la fonction unix_timestamp pour convertir l'heure des caractères en un horodatage Unix.
select meeting_id,meeting_name,start_time,end_time from meeting_data where meeting_id REGEXP '[0-9]{4}0001' and unix_timestamp(start_time) 98af3aed4642ba62db3d3875db9cdaa5 unix_timestamp(NOW());
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!