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, si vous souhaitez connaître les membres qui se sont 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 de requête, et vous constaterez que les informations sur les membres inscrits le 31/10/2007, c'est fondamentalement qu'il n'apparaît pas 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' est incomplè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. Ajouter des dates
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 numériques.
(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é.
installation
Le paramètre intervalle peut avoir les valeurs suivantes :
Description du paramètre
aaaa année
q trimestre
m mois
y le nombre de jours dans une année
jour j
w Jour de la semaine
semaines
h heures
n minutes
s secondes
illustrer
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 à 30 jours du jour en cours ou une heure à 45 minutes de maintenant. Pour ajouter un intervalle de temps en jours à ce jour, vous pouvez utiliser les jours de l'année (y), les jours (d) ou les 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. Soustraction de date
Fonction DateDiff
Renvoie l'intervalle de temps entre deux dates.
DateDiff(intervalle, date1, date2 [, premier jour de la semaine [, première semaine de l'année]])
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 numériques.
(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 numériques.
(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 numériques.
installation
Le paramètre intervalle peut avoir les valeurs suivantes :
Description du paramètre
aaaa année
q trimestre
m mois
y le nombre de jours dans une année
jour j
w Jour de la semaine
semaines
h heures
n minutes
s secondes
Le paramètre firstdayofweek peut avoir les valeurs suivantes :
Description de la valeur constante
vbUseSystem 0 Utilisez le paramètre API National Language Support (NLS).
vbSunday 1 dimanche (par défaut)
vbLundi 2 lundi
vbmardi 3 mardi
vbmercredi 4 mercredi
vbjeudi 5 jeudi
vbvendredi 6 vendredi
vbSamedi 7 Samedi
Le paramètre firstweekofyear peut avoir les valeurs suivantes :
Description de la valeur constante
vbUseSystem 0 Utilisez le paramètre API National Language Support (NLS).
vbFirstJan1 1 Commence par la semaine du 1er janvier (par défaut).
vbFirstFourDays 2 commence par la première semaine de la nouvelle année qui compte au moins quatre jours.
vbFirstFullWeek 3 commence par la première semaine complète de la nouvelle année.
illustrer
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 le nombre de jours dans une année (y) ou de jours (d). Lorsque intervalle correspond au nombre de jours dans 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 de semaines (ww), la fonction DateDiff renvoie le nombre de semaines entre deux dates dans le tableau 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.
Le paramètre firstdayofweek 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 l'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.