Maison  >  Article  >  base de données  >  Exemples de fonctions de traitement de date et d'heure et de fonctions de traitement numérique (Utilisation des fonctions informatiques 2)

Exemples de fonctions de traitement de date et d'heure et de fonctions de traitement numérique (Utilisation des fonctions informatiques 2)

巴扎黑
巴扎黑original
2017-05-05 17:06:411461parcourir

Fonctions de traitement de la date et de l'heure

La date et l'heure sont stockées dans les types de données correspondants et dans des formats spéciaux, afin qu'elles puissent être triées ou filtrées rapidement et efficacement, et économiser de l'espace de stockage physique .

En général, les applications n'utilisent pas de format pour stocker les dates et les heures, donc les fonctions de date et d'heure sont toujours utilisées pour lire et manipuler ces valeurs. Pour cette raison, les fonctions de date et d’heure jouent un rôle important dans le langage MySQL.

Le tableau suivant répertorie certaines fonctions de traitement de date et d'heure couramment utilisées :

Exemples de fonctions de traitement de date et dheure et de fonctions de traitement numérique (Utilisation des fonctions informatiques 2)

C'est le bon moment pour déterminer où filtrer les données. Jusqu'à présent, nous avons filtré les données à l'aide de clauses Where qui comparent des nombres et du texte, mais les données doivent souvent être filtrées par date. Le filtrage par date nécessite quelques considérations supplémentaires et l'utilisation de fonctions MySQL spéciales.

La première chose à noter est le format de date utilisé par MySQL. Chaque fois que vous spécifiez une date, que ce soit en insérant ou en mettant à jour une valeur de table ou en filtrant avec une clause Where, la date doit être au format aaaa-mm-jj. Par conséquent, le 1er septembre 2005 est indiqué comme 2005-09-01. Bien que d'autres formats de date puissent fonctionner, il s'agit du format de date préféré car il exclut toute ambiguïté (par exemple, 04/05/06 correspond au 4 mai 2006 ou au 5 avril). 2006 ou 6 mai 2004 ou...).

Une année à 4 chiffres doit toujours être utilisée. Les années à 2 chiffres sont prises en charge. MySQL gère 00-69 comme 2000-2069 et 70-99 comme 1970-1999. Bien qu'il s'agisse d'années prévues, l'utilisation d'années complètes à 4 chiffres est plus fiable car MySQL n'a besoin de faire aucune hypothèse.

Une comparaison de date de base devrait donc être simple :

Entrée :

select cust_id,order_num from orders where order_date = '2005-09-01';

Sortie :

Exemples de fonctions de traitement de date et dheure et de fonctions de traitement numérique (Utilisation des fonctions informatiques 2)

Analyse : Cette instruction select s'exécute normalement. Il récupère un enregistrement de commande dont order_date est le 2005-09-01.

Mais, l'utilisation dewhere order_date = '2005-09-01' est-elle fiable ? Le type de données de order_date est datetime. Ce type stocke les valeurs de date et d’heure. Les valeurs de l'exemple de tableau ont toutes une valeur temporelle de 00:00:00, mais dans la pratique, ce n'est probablement pas toujours le cas. Que se passe-t-il si je stocke la date de commande avec la date et l'heure actuelles ? Par exemple, si la valeur order_date stockée est 2005-09-01 11:30:05, alors où order_date = '2005-09-01' échoue. Même si on lui donne une ligne avec cette date, elle ne sera pas récupérée car la correspondance Where échoue.

La solution consiste à demander à MySQL de comparer la date donnée uniquement à la partie date de la colonne, plutôt que de comparer la date donnée à la valeur entière de la colonne. Pour cela, la fonction date() doit être utilisée. Date(order_date) demande à MySQL d'extraire uniquement la partie date de la colonne. Une instruction de sélection plus fiable est :

Entrée :

select cust_id,order_num from orders where Date(order_date) = '2005-09-01';

Si tout ce que vous voulez est la date, utilisez-la. Date( ) est une bonne pratique, même si vous savez que la colonne correspondante ne contient que des dates. De cette façon, si, pour une raison quelconque, des valeurs de date et d'heure apparaissent ultérieurement dans le tableau, votre code SQL n'a pas besoin d'être modifié. Bien sûr, il existe également une fonction Time(), qui doit être utilisée lorsque vous souhaitez simplement connaître l'heure.

Date() et Time() ont tous deux été introduits pour la première fois dans MySQL 4.1.1.

Une fois que vous saurez comment tester l'égalité avec les dates, l'utilisation d'autres opérateurs sera claire.

Cependant, il existe un autre type de comparaison de dates qui doit être expliqué. Que faire si vous souhaitez récupérer toutes les commandes passées en septembre 2005 ? Un simple test d’égalité ne fonctionnera pas car il doit également correspondre au nombre de jours du mois. Il existe plusieurs solutions, dont l'une ressemble à ceci :

Entrée :

select cust_id,order_num from orders where Date(order_date) between '2005-09-01' and  '2005-09-30';

Sortie :

Exemples de fonctions de traitement de date et dheure et de fonctions de traitement numérique (Utilisation des fonctions informatiques 2)

Analyse : où , l'opérateur between est utilisé pour définir le 01/09/2005 et le 30/09/2005 comme plage de dates à mettre en correspondance.


Fonction de traitement numérique

La fonction de traitement numérique traite uniquement les données numériques. Ces fonctions sont généralement utilisées principalement pour des opérations algébriques, trigonométriques ou géométriques et ne sont donc pas utilisées aussi fréquemment que les fonctions de traitement de chaînes ou de date-heure.

Ironiquement, parmi les fonctions des principaux SGBD, les fonctions numériques sont les plus cohérentes et uniformes. Le tableau suivant répertorie quelques fonctions de traitement numérique couramment utilisées :

Exemples de fonctions de traitement de date et dheure et de fonctions de traitement numérique (Utilisation des fonctions informatiques 2)

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn