Ich bin heute bei der Arbeit auf ein Problem gestoßen. Ich musste die Zeit abfragen, aber die Abfrageergebnisse waren falsch. Um beispielsweise herauszufinden, welche Mitglieder sich zwischen dem 12.10.2007 und dem 31.10.2007 auf der Website registriert haben, klicken Sie nach Auswahl des Datums auf die Schaltfläche „Abfrage“, um die Mitglieder zu finden, die sich am 31.10.2007 registriert haben. Die Informationen werden überhaupt nicht angezeigt und die Ergebnisse sind nach mehreren Tests gleich. Der Debugger hat festgestellt, dass ein Problem mit der SQL-Anweisung vorliegt.
Die SQL-Anweisung lautet wie folgt: SELECT * FROM userinfo WHERE regtime >= '2007-10-12' AND regtime <= '2007-10-31'. Auf den ersten Blick scheint in dieser SQL-Anweisung kein Fehler vorzuliegen, aber nach dem Vergleich der in den entsprechenden Feldern in der Datenbank gespeicherten Werte wird festgestellt, dass die gespeicherten Werte nicht in einfacher Form vorliegen Datum, aber in der Form von Datum + Uhrzeit, d. 10-31' ist unvollständig geschrieben, daher werden die beiden Werte nicht als gleich angesehen. Was zu tun?
Keine Sorge, ASP stellt uns Datumsadditions- und -subtraktionsfunktionen zur Verfügung, die uns bei der Lösung dieses Problems helfen.
1. Datumszugabe
Die DateAdd-Funktion gibt das Datum zurück, zu dem das angegebene Zeitintervall hinzugefügt wurde.
DateAdd(Intervall, Zahl, Datum)
Die Syntax der DateAdd-Funktion weist die folgenden Parameter auf: (1) Intervall ist erforderlich. Ein Zeichenfolgenausdruck, der das hinzuzufügende Zeitintervall darstellt. Werte finden Sie im Abschnitt „Einstellungen“.
(2) Anzahl ist erforderlich. Numerischer Ausdruck, der die Anzahl der hinzuzufügenden Zeitintervalle angibt. Numerische Ausdrücke können positiv (ein Datum in der Zukunft erhalten) oder negativ (ein Datum in der Vergangenheit erhalten) sein.
(3) Datum ist erforderlich. Variante oder Text, der das Datum darstellt, zu dem das Intervall hinzugefügt werden soll.
Beschreibung Mit der DateAdd-Funktion können Sie ein bestimmtes Zeitintervall zu einem Datum addieren oder davon subtrahieren. Mit DateAdd können Sie beispielsweise ein Datum in 30 Tagen ab heute oder eine Zeit in 45 Minuten berechnen. Um ein Zeitintervall in „Tagen“ zum Datum hinzuzufügen, können Sie „Tage des Jahres“ („y“), „Tage“ („d“) oder „Tage der Woche“ („w“) verwenden.
Die DateAdd-Funktion gibt keine ungültigen Daten zurück. Das folgende Beispiel fügt dem 31. Januar 1995 einen Monat hinzu:
NewDate = DateAdd("m", 1, "31-Jan-95")
In diesem Beispiel gibt DateAdd den 28. Februar 1995 zurück, nicht den 31. Februar 1995. Wenn das Datum der 31. Januar 1996 ist, wird der 29. Februar 1996 zurückgegeben, da 1996 ein Schaltjahr ist.
Wenn das berechnete Datum vor 100 n. Chr. liegt, tritt ein Fehler auf.
Wenn Zahl kein Long-Wert ist, wird er vor der Berechnung auf die nächste Ganzzahl gerundet.
2. Datumssubtraktion Die DateDiff-Funktion gibt das Zeitintervall zwischen zwei Datumsangaben zurück.
DateDiff(interval, date1, date2 [,firstdayofweek[, firstweekofyear]])
Die Syntax der DateDiff-Funktion hat die folgenden Parameter:
(1) Intervall ist erforderlich. Ein Zeichenfolgenausdruck, der zur Berechnung des Zeitintervalls zwischen Datum1 und Datum2 verwendet wird. Werte finden Sie im Abschnitt „Einstellungen“.
(2) date1, date2 sind erforderlich. Datumsausdruck. Zur Berechnung werden zwei Daten verwendet.
(3) Erster Wochentag optional. Eine Konstante, die den ersten Tag der Woche angibt. Wenn nicht angegeben, wird standardmäßig Sonntag verwendet. Werte finden Sie im Abschnitt „Einstellungen“.
(4) Erste Woche des Jahres optional. Konstante, die die erste Woche des Jahres angibt. Wenn nichts angegeben wird, wird standardmäßig die Woche vom 1. Januar verwendet. Werte finden Sie im Abschnitt „Einstellungen“.
Beschreibung Mit der DateDiff-Funktion wird die Anzahl der angegebenen Zeitintervalle ermittelt, die zwischen zwei Datumsangaben liegen. Mit DateDiff können Sie beispielsweise die Anzahl der Tage zwischen zwei Daten oder die Anzahl der Wochen zwischen dem heutigen Tag und dem letzten Tag des Jahres berechnen.
Um die Anzahl der Tage zwischen Datum1 und Datum2 zu berechnen, können Sie „Tage im Jahr“ („y“) oder „Tage“ („d“) verwenden. Wenn das Intervall „Wochentag“ („w“) ist, gibt DateDiff die Anzahl der Wochen zwischen zwei Daten zurück. Wenn Datum1 ein Montag ist, zählt DateDiff die Anzahl der Montage vor Datum2. Dieses Ergebnis enthält Datum2, aber nicht Datum1. Wenn das Intervall „Woche“ („ww“) ist, gibt die DateDiff-Funktion die Anzahl der Wochen zwischen zwei Daten in der Kalendertabelle zurück. Die Funktion zählt die Anzahl der Sonntage zwischen Datum1 und Datum2. DateDiff wertet Datum2 aus, wenn Datum2 ein Sonntag ist, nicht jedoch Datum1, selbst wenn Datum1 ein Sonntag ist.
Wenn Datum1 nach Datum2 liegt, gibt die DateDiff-Funktion eine negative Zahl zurück.
Das Argument „firstdayofweek“ wirkt sich auf Berechnungen mit den Trennzeichen „w“ und „ww“ aus.
Wenn date1 oder date2 ein Datumsliteral ist, wird das angegebene Jahr zu einem festen Bestandteil des Datums. Wenn Datum1 oder Datum2 jedoch in Anführungszeichen (" ") eingeschlossen ist und das Jahr weggelassen wird, wird das aktuelle Jahr jedes Mal eingefügt, wenn der Ausdruck Datum1 oder Datum2 im Code ausgewertet wird. Dadurch ist es möglich, Programmcode zu schreiben, der über verschiedene Jahre hinweg funktioniert.
Wenn das Intervall „Jahr“ („JJJJ“) ist, vergleichen Sie den 31. Dezember mit dem 1. Januar des nächsten Jahres. Obwohl die Differenz tatsächlich nur einen Tag beträgt, gibt DateDiff 1 zurück, was eine Differenz von einem Jahr bedeutet.