Heim >Datenbank >MySQL-Tutorial >Grundlagen der SQL-Datenoperationen (Mittelstufe) 10
Datum und Uhrzeit manipulieren
Datums- und Uhrzeitfunktionen sind beim Erstellen einer Website sehr nützlich. Websitebesitzer sind häufig daran interessiert, wann Daten in einer Tabelle aktualisiert werden. Mit Datums- und Uhrzeitfunktionen können Sie Änderungen an einer Tabelle auf Millisekundenebene verfolgen.
Gibt das aktuelle Datum und die aktuelle Uhrzeit zurück
Mit der Funktion GETDATE() können Sie das aktuelle Datum und die aktuelle Uhrzeit abrufen. Zum Beispiel die Anweisung SELECT
GETDATE() gibt die folgenden Ergebnisse zurück:
…………………………..
30. NOV 1997 03:29 Uhr
(1
Zeile(n)
betroffen)
Wenn Sie diese Funktion in Zukunft verwenden, wird das Datum, das Sie erhalten, natürlich später oder früher sein.
Die Funktion GETDATE() kann als Standardwert eines Felds vom Typ DATEDIME() verwendet werden. Dies ist nützlich, um beim Einfügen eines Datensatzes die aktuelle Uhrzeit zu speichern. Angenommen, Sie verfügen über eine Tabelle, die ein Aktivitätsprotokoll auf Ihrer Website enthält. Jedes Mal, wenn ein Besucher Ihre Website besucht, fügen Sie der Tabelle einen neuen Datensatz hinzu und notieren Sie den Namen, die Aktivität und die Besuchszeit des Besuchers. Um eine Tabelle zu erstellen, deren Datensätze das aktuelle Datum und die aktuelle Uhrzeit enthalten, können Sie ein DATETIME-Feld hinzufügen und angeben, dass sein Standardwert der Rückgabewert der Funktion GETDATE() ist, etwa so:
CREATE
TABELLE site_log (
Benutzername VARCHAR(40),
Benutzeraktivität
VARCHAR(100),
Eintragsdatum DATETIME DEFAULT
GETDATE())
Datum und Uhrzeit umrechnen
Sie haben vielleicht bemerkt, dass im Beispiel im vorherigen Abschnitt der Rückgabewert der Funktion GETDATE() nur sekundengenau angezeigt wird. Tatsächlich SQL
Die interne Zeit des Servers kann auf die Millisekunde genau sein (um genau zu sein, kann sie auf 3,33 Millisekunden genau sein).
Um Datum und Uhrzeit in verschiedenen Formaten zu erhalten, müssen Sie die Funktion CONVERT() verwenden. Wenn beispielsweise die folgende Anweisung ausgeführt wird, umfasst die angezeigte Zeit Millisekunden:
SELECT
CONVERT(VARCHAR(30),GETDATE(),9)
Beachten Sie die Verwendung der Zahl 9 im Beispiel. Diese Zahl gibt an, welches Datums- und Uhrzeitformat bei der Anzeige von Datum und Uhrzeit verwendet werden soll. Wenn diese Anweisung ausgeführt wird, werden das folgende Datum und die folgende Uhrzeit angezeigt:
…………………………………………..
Nov
30 1997 03:29:55:170
(1 Zeile(n)
betroffen)
Sie können in der Funktion CONVERT() viele verschiedene Arten von Datums- und Zeitformaten verwenden. Tabelle 11.1 zeigt alle Formate.
Tabelle 11.1
Datums- und Uhrzeittyp
Typwert Standardausgabe
0 Standard mon dd yyyy hh:miAM
1 USA
mm/tt/jj
2 ANSI jj.mm.tt
3 Britisch/Französisch tt/mm/jj
4 Deutsch
dd.mm.yy
5 Italienisch dd-mm-yy
6 - dd mo yy
7 - mo
dd,yy
8 - hh:mi:ss
Standard + Millisekunden--mon dd yyyy
hh:mi:ss:mmmAM(or )
10 USA MM-TT-JJ
11 JAPAN
jj/mm/tt
12 ISO jjmmtt
13 Europa Standard + Millisekunden--tt mon
jjjj
hh:mi:ss:mmm(24h)
14 -
hh:mi:ss:mmm(24h)
Typen 0, 9 und 13 geben immer eine vierstellige Jahreszahl zurück. Um bei anderen Typen das Jahrhundert anzuzeigen, addieren Sie 100 zum Stilwert. Die Typen 13 und 14 geben die Uhrzeit im 24-Stunden-Format zurück. Die Typen 0, 7 und 13 geben den Monat als dreistellige Darstellung zurück (verwenden Sie Nov für November). Für jedes in Tabelle 11.1 aufgeführte Format können Sie 100 zum Typwert hinzufügen, um Jahre mit Jahrhunderten anzuzeigen (Beispiel: Das Jahr 00 wird als Jahr 2000 angezeigt.) Um beispielsweise Datumsangaben nach japanischen Standards einschließlich des Jahrhunderts anzuzeigen, würden Sie die folgende Anweisung verwenden:
SELECT
CONVERT(VARCHAR(30), GETDATE(), 111)
In diesem Beispiel konvertiert die Funktion CONVERT() das Datumsformat und zeigt es als 30.11.1997 an
Das Datum extrahieren und Uhrzeit
In vielen Fällen möchten Sie möglicherweise nur einen Teil des Datums und der Uhrzeit und nicht das vollständige Datum und die Uhrzeit erhalten. Angenommen, Sie möchten die Monate auflisten, in denen jede Site in Ihrem Site-Verzeichnis abgefragt wurde. An dieser Stelle möchten Sie nicht, dass das vollständige Datum und die vollständige Uhrzeit die Seite überladen. Um einen bestimmten Teil eines Datums zu extrahieren, können Sie die Funktion DATEPART() verwenden, etwa so:
SELECT
site_name ‚Site-Name‘,
DATEPART(mm,site_entrydate) ‚Monat der Veröffentlichung‘ FROM
site_directory
Die Parameter der Funktion DATEPART() sind zwei Variablen. Die erste Variable gibt an, welcher Teil des Datums extrahiert werden soll; die zweite Variable sind die tatsächlichen Daten. In diesem Beispiel extrahiert die Funktion DATEPART() den Monat, da mm den Monat darstellt. Unten ist dieses SELECT
Das Ausgabeergebnis der Anweisung:
Site Name Month
Gepostet
………………………………………………………………
Yahoo 2
Microsoft
5
Magicw3 5
(3 Zeile(n) betroffen)
Monat
In der Spalte „Gepostet“ wird der Monat angezeigt, in dem jede Website abgefragt wurde. Der Rückgabewert der Funktion DATEPART() ist eine Ganzzahl. Mit dieser Funktion können Sie verschiedene Teile eines Datums extrahieren, wie in Tabelle 11.2 gezeigt.
Tabelle 11.2
Teile des Datums und ihre Abkürzungen
Datumsteil Abkürzungswert
Jahr JJ 1753--9999
Quartal QQ 1--4
Monat mm
1--12
Tag des Jahres dy 1--366
Tag tt 1--31
Woche Wo
1--53
Wochentag dw 1--7(Sonntag--Samstag)
Stunde hh
0--23
Minute mi 0--59
Sekunde ss 0--59
Millisekunde ms
0--999
Die Verwendung der Funktion DATEPART() zur Rückgabe einer Ganzzahl ist nützlich, wenn Sie Datums- und Uhrzeitangaben vergleichen müssen. Allerdings sind die Abfrageergebnisse (2, 5) im obigen Beispiel nicht sehr gut lesbar. Um einen Teil des Datums und der Uhrzeit in einem besser lesbaren Format zu erhalten, können Sie die Funktion DATENAME() verwenden, wie im folgenden Beispiel gezeigt:
SELECT
site_name ‚Site-Name‘
DATENAME(mm,site_entrydate) ‚Monat
Gepostet’
VON
site_directory
Die Funktion DATENAME() und die Funktion DATEPART() erhalten die gleichen Parameter. Der Rückgabewert ist jedoch eine Zeichenfolge und keine Ganzzahl. Das Folgende ist das Ergebnis, das durch die Verwendung von DATENAME() im obigen Beispiel erhalten wurde:
Site
Name Monat Postec
……………………………………………………………………….
Yahoo
Februar
Microsoft Juni
Magicw3 Juni
(3 Zeile(n)
betroffen)
Sie können auch die Funktion DATENAE() verwenden, um einen Wochentag zu extrahieren. Das folgende Beispiel extrahiert sowohl den Wochentag als auch den Monat des Datums:
SELECT
site_name ‚Site Name‘,
DATENAME(dw,site_entrydate)+ ‚-‘ +
DATENAME(mm,site_entrydate)
FORMULAR „Tag und Monat der Veröffentlichung“.
site_directory
Wenn dieses Beispiel ausgeführt wird, werden die folgenden Ergebnisse zurückgegeben:
Site-Name, Tag und Monat
Gepostet
……………………………………………………………………………………
Yahoo Friday -
Februar
Microsoft Dienstag – Juni
Magicw3 Montag – Juni
(3
Zeile(n)
betroffen)
Datums- und Zeitbereich zurückgeben
Wenn Sie Daten in einer Tabelle analysieren, möchten Sie möglicherweise Daten für einen bestimmten Zeitpunkt abrufen. Möglicherweise sind Sie an der Besucheraktivität auf Ihrer Website an einem bestimmten Tag interessiert, beispielsweise am 25. Dezember 2000. Um diese Art von Daten abzurufen, können Sie versuchen, eine SELECT-Anweisung wie diese zu verwenden:
SELECT
* VOM Weblog WO
Entrydate=“12/25/20000“
Tu das nicht. Diese SELECT-Anweisung gibt nicht den richtigen Datensatz zurück, sondern nur das Datum und die Uhrzeit vom 25.12.2000
Aufzeichnung von 00:00:00:000 Uhr. Mit anderen Worten: Es werden nur Datensätze zurückgegeben, die genau um Mitternacht eingegeben wurden.
Hinweis:
In der Diskussion in diesem Abschnitt wird davon ausgegangen, dass das Feld „Entrydate“ vom Typ DATETIME und nicht vom Typ SMALLDATETIME ist. Die Diskussion in diesem Abschnitt gilt auch für Felder vom Typ SMALLDATETIME, Felder vom Typ SMALLDATETIME können jedoch nur auf Sekunden genau sein.
Das Problem ist SQL
Sever wird Teildaten und -zeiten durch vollständige Daten und Zeiten ersetzen. Wenn Sie beispielsweise ein Datum, aber keine Uhrzeit eingeben, SQL
Sever fügt die Standardzeit „12:00:00:000AM“ hinzu. Wenn Sie eine Uhrzeit, aber kein Datum eingeben, fügt SQL Server das Standarddatum „1. Januar“ hinzu
1900".
Um die korrekten Datensätze zurückzugeben, müssen Sie einen Datums- und Zeitbereich anwenden. Es gibt mehr als eine Möglichkeit, dies zu tun. Zum Beispiel diese SELECT unten
Die Anweisung gibt die richtigen Datensätze zurück:
SELECT * FROM weblog
WHERE
Eintragsdatum>=“25.12.2000“ UND
enterdate<“26.12.2000“
Diese Anweisung kann die Aufgabe abschließen, da sie das Datum und die Uhrzeit in der Tabelle auswählt, die größer oder gleich dem 25.12.2000 sind
00:00:00:000 Uhr und weniger als 26.12.2000
Aufzeichnung von 00:00:00:000 Uhr. Mit anderen Worten: Es wird jeder am Weihnachtstag 2000 eingegebene Datensatz korrekt zurückgegeben.
Alternativ können Sie LIKE verwenden, um den richtigen Datensatz zurückzugeben. Sie können alle Zeiten an einem bestimmten Datum abgleichen, indem Sie das Platzhalterzeichen „%“ in den Datumsausdruck einfügen. Hier ist ein Beispiel:
SELECT
* VOM Weblog WO Eintrittsdatum WIE „25. Dezember
2000 %‘
Diese Aussage kann mit dem richtigen Datensatz übereinstimmen. Denn der Platzhalter „%“ steht für eine beliebige Zeit.
Mit diesen beiden Funktionen zum Abgleichen von Datum und Uhrzeit können Sie einen bestimmten Monat, einen bestimmten Tag, ein bestimmtes Jahr, eine bestimmte Stunde, eine bestimmte Minute, eine bestimmte Sekunde auswählen oder sogar einen bestimmten Zeitraum eingeben Millisekunden-Datensätze. Aber wenn Sie LIKE verwenden
Um Sekunden oder Millisekunden abzugleichen, müssen Sie zunächst Datum und Uhrzeit mithilfe der Funktion CONVERT() in ein genaueres Format konvertieren (siehe vorherigen Abschnitt „Datum und Uhrzeit konvertieren“).
Datum und Uhrzeit vergleichen
Schließlich gibt es noch zwei Datums- und Uhrzeitfunktionen, die nützlich sind, um Aufzeichnungen basierend auf Datum und Uhrzeit zu erstellen. Mit den Funktionen DATEADD() und DATEDIFF() können Sie frühere und spätere Daten vergleichen. Die folgende SELECT-Anweisung zeigt beispielsweise an, wie viele Stunden jeder Datensatz in der Tabelle eingegeben wurde:
SELECT
Eintragsdatum „Eingegebene Zeit“
DATEDIFF(hh,entrydate,GETDATE()) „Vor Stunden“
AUS Weblog
Wenn die aktuelle Zeit 18:15 Uhr am 30. November 2000 ist, werden die folgenden Ergebnisse zurückgegeben:
Eingegebene Zeit
Vor Stunden
…………………………………………………..
30. Dez. 2000 16:09 Uhr 2
Dez 30
2000 16:13 Uhr 2
1. Dez. 2000 16:09 Uhr 698
(3 Reihe(n)
betroffen)
Die Parameter der Funktion DADEDIFF() sind drei Variablen. Die Variable gibt einen Teil des Datums an. In diesem Beispiel werden die Daten stündlich verglichen (Einzelheiten zu den verschiedenen Teilen des Datums finden Sie in Tabelle 11.2. Zwischen den angegebenen Zeiten liegen am 1. November 2000 und am 30. November 2000). . Std. Die anderen beiden Parameter sind die zu vergleichenden Zeiten. Um eine positive Zahl zurückzugeben, sollte zuerst die frühere Zeit angegeben werden.
Die Funktion DATEADD() fügt zwei Datumsangaben hinzu. Diese Funktion ist nützlich, wenn Sie Daten wie Fristen berechnen müssen. Angenommen, Besucher müssen sich registrieren, bevor sie Ihre Website nutzen können. Nach der Anmeldung können sie Ihre Website einen Monat lang kostenlos nutzen. Um zu bestimmen, wann ihre freie Zeit abläuft, können Sie die folgende SELECT-Anweisung verwenden:
SELECT
Benutzername „Benutzername“,
DATEADD(mm,1,firstvisit_date) „Registrierung
Läuft ab‘
VOM
Die Parameter der Funktion „registration_table
“ DATEADD() haben drei Variablen. Die erste Variable repräsentiert einen Teil des Datums (siehe Tabelle 11.2). In diesem Beispiel repräsentiert mm den Monat. Die zweite Variable gibt das Zeitintervall an – in diesem Fall einen Monat. Die letzte Variable ist ein Datum. In diesem Beispiel wird das Datum aus dem Feld vom Typ DATETIME genommen. Gehen Sie davon aus, dass das aktuelle Datum Juni ist
30.2000 gibt diese Anweisung den folgenden Inhalt zurück:
Benutzernamenregistrierung
Läuft ab
…………………………………………………………………………………
Bill Gates 30. Juli 2000
16:09 Uhr
Präsident Clinton, 30. Juli 2000
16:13 Uhr
William Shakespeare, 1. Juli 2000, 16:09 Uhr
(3 Reihe(n)
betroffen)
Hinweis:
Im Gegensatz zu dem, was Sie vielleicht erwarten, werden bei Verwendung der Funktion DATEADD() zum Hinzufügen eines Monats zu einem Datum keine 30 Tage hinzugefügt. Diese Funktion addiert einfach 1 zum Monatswert. Das bedeutet, dass jemand, der sich im November angemeldet hat, zwei bis drei Tage mehr bekommt als jemand, der sich im Februar angemeldet hat. Um dieses Problem zu vermeiden, können Sie die Funktion DATEADD() verwenden, um Tage statt Monate direkt hinzuzufügen.
E-Mail senden
Sie können SQL verwenden
Sever sendet einfache E-Mail-Nachrichten. Dazu muss auf Ihrem System ein Mailserver wie Microsoft Exchange installiert sein
Server (siehe Kapitel 4, „Exchange Active Sever, Index Sever und NetShow“). Sie müssen auch SQL Server konfigurieren
um den Mailserver zu identifizieren.
Damit SQL Server den Mailserver erkennen kann, starten Sie Transaction Manager und wählen Sie Sever|SQL aus dem Menü
Mail|Configue, ein Dialogfeld wie in Abbildung 11.3 angezeigt wird angezeigt. Geben Sie den Benutzernamen und das Passwort ein, die Sie beim Mailserver registriert haben, und klicken Sie auf OK.
Hinweis:
Wenn Sie Microsoft verwenden
Exchange Server wird sich der Prozess der Konfiguration von SQL Server erheblich unterscheiden. Sie müssen Microsoft SQL unter demselben (Domänen-)Benutzerkonto ausführen
Sever und Exchange Sever. Sie müssen Exchange auch auf dem Computer installieren, auf dem SQL Server installiert ist
Klicken Sie auf und erstellen Sie eine Konfigurationsdatei für dieses Konto. Anschließend können Sie SQL Mail verwenden
Geben Sie im Dialogfeld „Konfiguration“ den Namen der Konfigurationsdatei ein.
Abbildung 11.3
Bevor Sie die E-Mail senden, müssen Sie SQL starten
Post. Wählen Sie Sever|SQL Mail|Start aus dem Menü. Wenn Ihr Mailserver richtig konfiguriert ist und Sie den richtigen Benutzernamen und das richtige Passwort eingegeben haben, SQL
Mail wird erfolgreich gestartet.
Hinweis:
Sie können SQL Server so konfigurieren, dass der E-Mail-Dienst automatisch gestartet wird. Um dies zu tun, setzen Sie Sever ein
Wählen Sie im Dialogfeld „Optionen“ die Option „Mail automatisch starten“ (wählen Sie „Server|SQL-Server|Konfigurieren“ aus dem Menü).
Nur Kunde.
Um eine E-Mail zu senden, können Sie eine erweiterte gespeicherte Prozedur namens xp_sendmail verwenden. Hier ist ein Beispiel für die Verwendung dieses Prozesses:
master..xp_sendmail
„president@whitehouse.gov“, „Hallo Herr.
Präsident“
Dieser Verfahrensaufruf sendet eine einfache E-Mail-Nachricht an die E-Mail-Adresse President@whitehouse.gov: „Hallo
Herr.
Präsident". Sie können den entsprechenden Inhalt im obigen Beispiel durch jede andere E-Mail-Adresse und Informationen ersetzen, aber die von Ihnen gesendeten Informationen dürfen eine Länge von 255 Zeichen nicht überschreiten.
Wenn Sie jederzeit die Datenbank Ihrer Website kennen möchten Die gespeicherte Prozedur xp_sendmail ist beispielsweise nützlich, um Nachrichten an einen Seitenmanager zu senden. Im nächsten Kapitel erfahren Sie mehr über gespeicherte Prozeduren
In diesem Kapitel haben Sie gelernt, wie Sie Indizes erstellen, um Ihre Abfragen zu beschleunigen, und wie Sie Aggregatfunktionen verwenden, um statistische Informationen zu Daten zu erhalten in einer Tabelle. Schließlich haben Sie viele wertvolle Ausdrücke, Funktionen und Verfahren zum Bearbeiten von Zeichenfolgen, Datumsangaben, Uhrzeiten und E-Mails gelernt.
Das nächste Kapitel wird Ihr Verständnis von Microsoft weiter vertiefen
Beherrschung von SQL Server. Sie lernen, mit SQL zu programmieren und gespeicherte Prozeduren, Trigger und Ausführungspläne zu erstellen. Noch spannender ist, dass Sie den Umgang mit SQL erlernen
Sever ist eine einfache Möglichkeit, Webseiten automatisch zu erstellen.
Das Obige ist der Inhalt von SQL Data Operation Basics (Intermediate) 10. Weitere verwandte Artikel finden Sie auf der chinesischen PHP-Website (www.php.cn)!