Ich bin heute bei der Arbeit auf ein Problem gestoßen. Ich musste die Zeit abfragen, aber die Abfrageergebnisse waren falsch. Wenn Sie beispielsweise herausfinden möchten, welche Mitglieder sich zwischen dem 12.10.2007 und dem 31.10.2007 auf der Website registriert haben, klicken Sie nach der Auswahl des Datums auf die Schaltfläche „Abfrage“ und Sie erhalten Informationen zu den registrierten Mitgliedern am 31.10.2007 lautet im Grunde: Es wird nicht angezeigt und die Ergebnisse sind nach mehreren Tests die gleichen. 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. Fügen Sie Daten hinzu
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. Zahlenwerte 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.
aufstellen
Der Intervallparameter kann folgende Werte annehmen:
Beschreibung der Einstellung
jjjj Jahr
q Viertel
m Monat
y die Anzahl der Tage in einem Jahr
Tag
w Wochentag
Ww Wochen
h Stunden
n Minuten
s Sekunden
veranschaulichen
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 dem aktuellen Tag oder eine Uhrzeit in 45 Minuten ab jetzt berechnen. Um ein Zeitintervall in Tagen bis heute hinzuzufügen, können Sie Tage des Jahres (y), Tage (d) oder Wochentage (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 ganze Zahl gerundet.
2. Datumssubtraktion
DateDiff-Funktion
Gibt das Zeitintervall zwischen zwei Daten zurück.
DateDiff(interval, date1, date2 [, firstdayofweek[, firstweekofyear]])
Die Syntax der DateDiff-Funktion weist die folgenden Parameter auf:
(1) Intervall ist erforderlich. Ein Zeichenfolgenausdruck, der zur Berechnung des Zeitintervalls zwischen Datum1 und Datum2 verwendet wird. Zahlenwerte 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. Zahlenwerte 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. Zahlenwerte finden Sie im Abschnitt „Einstellungen“.
aufstellen
Der Intervallparameter kann folgende Werte annehmen:
Beschreibung der Einstellung
jjjj Jahr
q Viertel
m Monat
y die Anzahl der Tage in einem Jahr
Tag
w Wochentag
Ww Wochen
h Stunden
n Minuten
s Sekunden
Der Parameter „firstdayofweek“ kann die folgenden Werte haben:
Beschreibung des konstanten Werts
vbUseSystem 0 Verwenden Sie die NLS-API-Einstellung (National Language Support).
vbSunday 1 Sonntag (Standard)
vbMonday 2 Montag
vbDienstag 3 Dienstag
vbMittwoch 4 Mittwoch
vbDonnerstag 5 Donnerstag
vbFreitag 6 Freitag
vbSaturday 7 Samstag
Der Parameter „firstweekofyear“ kann die folgenden Werte haben:
Beschreibung des konstanten Werts
vbUseSystem 0 Verwenden Sie die NLS-API-Einstellung (National Language Support).
vbFirstJan1 1 Beginnt mit der Woche vom 1. Januar (Standard).
vbFirstFourDays 2 beginnt mit der ersten Woche des neuen Jahres, die mindestens vier Tage hat.
vbFirstFullWeek 3 beginnt mit der ersten vollen Woche des neuen Jahres.
veranschaulichen
Die DateDiff-Funktion wird verwendet, um die Anzahl der angegebenen Zeitintervalle zu bestimmen, 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 die Anzahl der Tage in einem Jahr (y) oder Tage (d) verwenden. Wenn das Intervall die Anzahl der Tage in der Woche (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 Wochen (ww) beträgt, 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, Datum1 jedoch nicht, selbst wenn Datum1 ein Sonntag ist.
Wenn Datum1 nach Datum2 liegt, gibt die DateDiff-Funktion eine negative Zahl zurück.
Der Parameter „firstdayofweek“ wirkt sich auf Berechnungen mit den Trennzeichen „w“ und „ww“ aus.
Wenn Datum1 oder Datum2 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 für verschiedene Jahre funktioniert.
Wenn das Intervall das 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.