J'ai rencontré un problème au travail aujourd'hui. J'avais besoin d'effectuer une requête par heure, mais les résultats de la requête étaient incorrects. Par exemple, pour connaître les membres inscrits sur le site entre le 12/10/2007 et le 31/10/2007, après avoir sélectionné la date, cliquez sur le bouton « Requête » pour retrouver les membres inscrits le 31/10/2007. Les informations ne s'affichent pas du tout et les résultats sont les mêmes après plusieurs tests. Le débogueur a détecté un problème avec l'instruction SQL.
L'instruction SQL est la suivante : SELECT * FROM userinfo WHERE regtime >= '2007-10-12' AND regtime <= '2007-10-31'. À première vue, il ne semble y avoir aucune erreur dans cette instruction SQL, mais après avoir comparé les valeurs enregistrées dans les champs correspondants de la base de données, on constate que les valeurs enregistrées ne se présentent pas sous la forme d'un simple date, mais sous la forme de date + heure, c'est-à-dire : aaaa-MM-jj HH:mm :ss, lorsque l'instruction SQL détermine la taille de l'heure d'enregistrement et '2007-10-31', elle pensera que '2007- 10-31' n'est pas complètement écrit, donc les deux valeurs ne seront pas considérées comme égales. Ce qu'il faut faire?
Ne vous inquiétez pas, ASP nous fournit des fonctions d'addition et de soustraction de dates pour nous aider à résoudre ce problème.
1. Ajout de date
La fonction DateAdd renvoie la date à laquelle l'intervalle de temps spécifié a été ajouté.
DateAdd (intervalle, nombre, date)
La syntaxe de la fonction DateAdd a les paramètres suivants (1) un intervalle est requis. Une expression de chaîne représentant l'intervalle de temps à ajouter. Voir la section Paramètres pour les valeurs.
(2) le numéro est requis. Expression numérique indiquant le nombre d'intervalles de temps à ajouter. Les expressions numériques peuvent être positives (obtenir une date dans le futur) ou négatives (obtenir une date dans le passé).
(3) la date est requise. Variante ou texte représentant la date à laquelle l'intervalle doit être ajouté.
Description Vous pouvez utiliser la fonction DateAdd pour ajouter ou soustraire un intervalle de temps spécifié à une date. Par exemple, vous pouvez utiliser DateAdd pour calculer une date dans 30 jours ou une heure dans 45 minutes. Pour ajouter un intervalle de temps en « jours » à ce jour, vous pouvez utiliser « jours de l'année » (« y »), « jours » (« d ») ou « jours de la semaine » (« w »).
La fonction DateAdd ne renvoie pas de dates invalides. L'exemple suivant ajoute un mois au 31 janvier 1995 :
NewDate = DateAdd("m", 1, "31-Jan-95")
Dans cet exemple, DateAdd renvoie le 28 février 1995 et non le 31 février 1995. Si la date est le 31 janvier 1996, la date du 29 février 1996 est renvoyée car 1996 est une année bissextile.
Si la date calculée est antérieure à 100 après JC, une erreur se produira.
Si le nombre n'est pas une valeur Long, il est arrondi à l'entier le plus proche avant le calcul.
2. La fonction DateDiff de soustraction de date renvoie l'intervalle de temps entre deux dates.
DateDiff(interval, date1, date2 [,firstdayofweek[, firstweekofyear]])
La syntaxe de la fonction DateDiff a les paramètres suivants :
(1) un intervalle est requis. Expression de chaîne utilisée pour calculer l'intervalle de temps entre date1 et date2. Voir la section Paramètres pour les valeurs.
(2) date1, date2 sont requis. Expression des dates. Deux dates utilisées pour le calcul.
(3) Premier jour de la semaine facultatif. Constante qui spécifie le premier jour de la semaine. S’il n’est pas spécifié, la valeur par défaut est dimanche. Voir la section Paramètres pour les valeurs.
(4) Première semaine de l'année en option. Constante qui spécifie la première semaine de l'année. Si rien n’est spécifié, la valeur par défaut est la semaine du 1er janvier. Voir la section Paramètres pour les valeurs.
Description La fonction DateDiff est utilisée pour déterminer le nombre d'intervalles de temps spécifiés qui existent entre deux dates. Par exemple, vous pouvez utiliser DateDiff pour calculer le nombre de jours entre deux dates ou le nombre de semaines entre aujourd'hui et le dernier jour de l'année.
Pour calculer le nombre de jours entre date1 et date2, vous pouvez utiliser « jours dans l'année » (« y ») ou « jours » (« d »). Lorsque l'intervalle est « jour de la semaine » (« w »), DateDiff renvoie le nombre de semaines entre deux dates. Si date1 est un lundi, DateDiff compte le nombre de lundis avant date2. Ce résultat contient date2 mais pas date1. Si l'intervalle est « semaine » (« ww »), la fonction DateDiff renvoie le nombre de semaines entre deux dates dans la table du calendrier. La fonction compte le nombre de dimanches entre date1 et date2. DateDiff évaluera date2 si date2 est un dimanche, mais pas date1 même si date1 est un dimanche.
Si date1 est postérieur à date2, la fonction DateDiff renvoie un nombre négatif.
L'argument premier jour de la semaine affecte les calculs utilisant les symboles séparateurs « w » et « ww ».
Si date1 ou date2 est un littéral de date, l'année spécifiée devient une partie fixe de la date. Mais si date1 ou date2 est placé entre guillemets (" ") et que l'année est omise, l'année en cours sera insérée chaque fois que l'expression date1 ou date2 est évaluée dans le code. Cela permet d'écrire du code de programme qui fonctionne pour différentes années.
Lorsque l'intervalle est « année » (« aaaa »), comparez le 31 décembre avec le 1er janvier de l'année suivante. Bien que la différence ne soit en réalité que d'un jour, DateDiff renvoie 1, indiquant une différence d'un an.