Heim >Datenbank >MySQL-Tutorial >Grundlagen der SQL-Datenoperationen (Mittelstufe) 10

Grundlagen der SQL-Datenoperationen (Mittelstufe) 10

黄舟
黄舟Original
2016-12-17 14:39:50925Durchsuche

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)!


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn