Datumsfunktionen in der SQL-Beschreibung. Transact-SQL-Funktionen. Berechnen des Intervalls zwischen Datumsangaben

💖 Gefällt es dir? Teilen Sie den Link mit Ihren Freunden

Grüße, liebe Leser der Blogseite. In einer Datenbank müssen häufig verschiedene Daten zu Datum und Uhrzeit gespeichert werden. Dabei kann es sich um das Datum der Hinzufügung der Informationen, das Datum der Benutzerregistrierung, den Zeitpunkt der letzten Autorisierung und andere Daten handeln. IN SQL-Sprache Es gibt viele Funktionen im Zusammenhang mit Datum und Uhrzeit, deshalb schauen wir uns sie heute an.

Alle unten besprochenen Funktionen funktionieren mit Kalenderdatentypen.

Abrufen des aktuellen Datums und der aktuellen Uhrzeit.

Um zu bekommen aktuelles Datum und Uhrzeit Funktion verwendet wird JETZT().

JETZT AUSWÄHLEN()
Ergebnis: 25.09.2015 14:42:53

Nur zum Empfangen aktuelles Datum Es gibt eine Funktion CURDATE().

SELECT CURDATE()
Ergebnis: 25.09.2015

Und Funktion CURTIME(), was nur zurückkommt aktuelle Uhrzeit:

SELECT CURTIME()
Ergebnis: 14:42:53

Die Funktionen CURDATE() und NOW() sind nützlich, um Datensätze zu einer Datenbank hinzuzufügen, für die Sie das Datum speichern möchten, an dem sie hinzugefügt wurden. Wenn Sie beispielsweise einen Artikel zu einer Website hinzufügen, wäre es eine gute Idee, dessen Veröffentlichungsdatum zu speichern. Dann sieht die Anfrage zum Hinzufügen eines Artikels zur Datenbank etwa so aus:

INSERT INTO posts (id_post, text_post, date_publication) VALUES (1, „Artikeltext“, NOW ());

Datum und Uhrzeit addieren und subtrahieren

Funktion ADDDATE (Datum, INTERVAL-Wert) ergänzt das Datum Datum Bedeutung Wert und gibt den resultierenden Wert zurück. Als Wert können folgende Werte verwendet werden:

  • ZWEITE - Sekunden
  • MINUTE - Minuten
  • STUNDE - Stunden
  • TAG – Tage
  • WOCHE - Wochen
  • MONAT - Monate
  • VIERTEL - Blöcke
  • JAHR – Jahre

sowie deren Kombinationen:

  • MINUTE_SECOND – Minuten und Sekunden
  • HOUR_SECOND Stunden – Minuten und Sekunden
  • HOUR_MINUTE – Stunden und Minuten
  • DAY_SECOND – Tage, Stunden, Minuten und Sekunden
  • DAY_MINUTE – Tage, Stunden und Minuten
  • DAY_HOUR – Tage und Stunden
  • YEAR_MONTH – Jahre und Monate.

ADDATUM AUSWÄHLEN („28.09.2015 10:30:20“, INTERVALL 1 TAG)
Ergebnis: 29.09.2015 10:30:20

ADDATUM AUSWÄHLEN („28.09.2015 10:30:20“, INTERVALL „3 1:20“ DAY_MINUTE)
Ergebnis: 01.10.2015 11:50:20

Funktion SUBDATE (Datum, INTERVAL-Wert) produziert Subtraktion Werte ab Datum Datum. Beispiel:

UNTERDATUM AUSWÄHLEN („28.09.2015 10:30:20“, INTERVALL 20 STUNDEN)
Ergebnis: 27.09.2015 14:30:20

Funktion PERIOD_ADD(Zeitraum, n) fügt hinzu zur Wertperiode n Monate. Der Periodenwert muss im Format JJJJMM vorliegen (September 2015 wäre beispielsweise 201509). Beispiel:

SELECT PERIOD_ADD (201509, 4)
Ergebnis: 201601

Funktion TIMESTAMPADD(Intervall, n, Datum) ergänzt das Datum Datum Zeitintervall n , deren Werte durch den Intervallparameter angegeben werden. Mögliche Werte für den Intervallparameter:

  • FRAC_SECOND – Mikrosekunden
  • ZWEITE - Sekunden
  • MINUTE - Minuten
  • STUNDE - Stunden
  • TAG – Tage
  • WOCHE - Wochen
  • MONAT - Monate
  • VIERTEL - Blöcke
  • JAHR – Jahre

SELECT TIMESTAMPADD (QUARTER, 1, „2015-09-28“)
Ergebnis: 28.12.2015

Funktion SUBTIME (Datum, Uhrzeit) subtrahiert vom Datum Datum Zeit Zeit. Beispiel:

SELECT SUBTIME("28.09.2015 10:30:20", "50:20:19")
Ergebnis: 26.09.2015 08:10:01

Berechnen des Intervalls zwischen Datumsangaben

Funktion TIMEDIFF(Datum1, Datum2) berechnet die Differenz in Stunden, Minuten und Sekunden zwischen zwei Daten date1 und date2 . Beispiel:

SELECT TIMEDIFF("28.09.2015 10:30:20", "29.09.2015 10:30:20")
Ergebnis: -24:10:00

Funktion DATEDIFF(Datum1, Datum2) rechnet Unterschied in Tagen zwischen zwei Datumsangaben, während Stunden, Minuten und Sekunden bei der Angabe von Datumsangaben ignoriert werden. Beispiel:

SELECT DATEDIFF("28.09.2015 00:00:20", "27.09.2015 23:40:20")
Ergebnis: 1

Mit dieser Funktion lässt sich ganz einfach ermitteln, wie viele Tage seit dem Veröffentlichungsdatum des Artikels vergangen sind:

SELECT DATEDIFF (CURDATE(), date_publication) FROM posts WHERE id_post = 1

Funktion PERIOD_DIFF (Periode1, Periode2) rechnet Unterschied in Monaten zwischen zwei Terminen. Datumsangaben müssen im Format JJJJMM vorliegen. Lassen Sie uns zum Beispiel herausfinden, wie viele Monate von Januar 2015 bis September 2015 vergangen sind:

SELECT PERIOD_DIFF (201509, 201501)
Ergebnis: 9

Funktion TIMESTAMPDIFF(Intervall, Datum1, Datum2) Berechnet die Differenz zwischen den Daten Datum2 und Datum1 in den im Intervallparameter angegebenen Einheiten. In diesem Fall kann das Intervall die folgenden Werte annehmen:

  • FRAC_SECOND – Mikrosekunden
  • ZWEITE - Sekunden
  • MINUTE - Minuten
  • STUNDE - Stunden
  • TAG – Tage
  • WOCHE - Wochen
  • MONAT - Monate
  • VIERTEL - Blöcke
  • JAHR – Jahre

SELECT TIMESTAMPDIFF (STUNDE, „2015-09-28 10:30:20“, „2015-09-28 19:50:20“)
Ergebnis: 9

Abrufen verschiedener Datums- und Zeitformate und anderer Informationen

Funktion DATUM (Datum/Uhrzeit) kehrt zurück Datum, Abschaltzeit. Beispiel:

DATUM AUSWÄHLEN("28.09.2015 10:30:20")
Ergebnis: 28.09.2015

Funktion ZEIT (Datum/Uhrzeit) kehrt zurück Uhrzeit, Stichtag. Beispiel:

ZEIT WÄHLEN („28.09.2015 10:30:20“)
Ergebnis: 10:30:20

Funktion TIMESTAMP (Datum) kehrt zurück Vollformat im Laufe der Zeit Termine Datum. Beispiel:

ZEITSTEMPEL("28.09.2015")
Ergebnis: 28.09.2015 00:00:00

TAG (Datum) Und DAYOFMONTH (Datum). Synonymfunktionen, die zurückkehren Seriennummer des Tages des Monats. Beispiel:

SELECT DAY("28.09.2015"), DAYOFMONTH("28.09.2015")
Ergebnis: 28 | 28

Funktionen DAYNAME (Datum),DAYOFWEEK (Datum) Und WOCHENTAG (Datum). Die erste Funktion kehrt zurück Name des Wochentags, zweite - Nummer des Wochentags(Zählung von 1 – Sonntag bis 7 – Samstag), die dritte ist auch die Nummer des Wochentags, nur ein weiterer Countdown (Zählung von 0 – Montag bis 6 – Sonntag). Beispiel:

SELECT DAYNAME("28.09.2015"), DAYOFWEEK("28.09.2015"), WEEKDAY("28.09.2015")
Ergebnis: Montag 2 | 0

Funktionen WOCHE (Datum) Und WEEKOFYEAR (Datum/Uhrzeit). Beide Funktionen kehren zurück Wochennummer des Jahres, nur die erste Woche beginnt am Sonntag und die zweite am Montag. Beispiel:

WÄHLEN SIE WOCHE („28.09.2015 10:30:20“), WEEKOFYEAR („28.09.2015 10:30:20“)
Ergebnis: 39 | 40

Funktion Monatsdatum) kehrt zurück numerischer Wert des Monats(von 1 bis 12) und MONTHNAME (Datum) Monatsname. Beispiel:

SELECT MONTH("28.09.2015 10:30:20"), MONTHNAME("28.09.2015 10:30:20")
Ergebnis: 9 | September

Funktion QUARTAL (Datum) kehrt zurück Blocknummer Jahre (von 1 bis 4). Beispiel:

QUARTAL AUSWÄHLEN („28.09.2015 10:30:20“)
Ergebnis: 3

Funktion JAHR (Datum) kehrt zurück Jahreswert(von 1000 bis 9999). Beispiel:

JAHR AUSWÄHLEN („28.09.2015 10:30:20“)
Ergebnis: 2015

Funktion DAYOFYEAR (Datum) kehrt zurück Seriennummer des Tages pro Jahr (von 1 bis 366). Grundierung:

SELECT DAYOFYEAR („28.09.2015 10:30:20“)
Ergebnis: 271

Funktion STUNDE (Datum/Uhrzeit) kehrt zurück Stundenwert(von 0 bis 23). Beispiel:

STUNDE AUSWÄHLEN („28.09.2015 10:30:20“)
Ergebnis: 10

Funktion MINUTE (Datum/Uhrzeit) kehrt zurück Minutenwert(von 0 bis 59). Beispiel:

MINUTE AUSWÄHLEN („28.09.2015 10:30:20“)
Ergebnis: 30

Funktion SECOND (Datum/Uhrzeit) kehrt zurück Sekundenwert(von 0 bis 59). Beispiel:

ZWEITE AUSWÄHLEN („28.09.2015 10:30:20“)
Ergebnis: 20

Funktion EXTRAKT (Typ FROM-Datum) gibt den durch den Typparameter angegebenen Datumsteil zurück. Beispiel:

WÄHLEN SIE AUSZUG (JAHR AB „2015-09-28 10:30:20“), AUSZUG (MONAT AB „2015-09-28 10:30:20“), AUSZUG (TAG AB „2015-09-28 10:30). :20"), AUSZUG (STUNDE AUS „28.09.2015 10:30:20"), AUSZUG (MINUTE AUS „28.09.2015 10:30:20"), AUSZUG (ZWEITER AUS „2015-09- 28 10:30:20")
Ergebnis: 2015 | 9 | 28 | 10 | 30 | 20

Reziproke Funktionen Heutiges Datum) Und FROM_DAYS(n). Erste Wandelt das Datum in die Anzahl der Tage um, seit dem Nulljahr vergangen. Der zweite hingegen akzeptiert Anzahl der Tage, ab dem Jahr Null vergangen und wandelt sie in das aktuelle Datum um. Beispiel:

SELECT TO_DAYS („28.09.2015 10:30:20“), FROM_DAYS (736234)
Ergebnis: 736234 | 28.09.2015

Reziproke Funktionen UNIX_TIMESTAMP (Datum) Und FROM_UNIXTIME(n). Erste Wandelt das Datum in Sekunden um seit dem 1. Januar 1970 verabschiedet. Der zweite hingegen akzeptiert Anzahl der Sekunden, ab 1. Januar 1970 und wandelt sie in das aktuelle Datum um. Beispiel:

SELECT UNIX_TIMESTAMP ("28.09.2015 10:30:20"), FROM_UNIXTIME (1443425420)
Ergebnis: 1443425420 | 28.09.2015 10:30:20

Reziproke Funktionen TIME_TO_SEC (Zeit) Und SEC_TO_TIME(n). Erste wandelt Zeit in Sekunden um, seit Beginn des Tages vergangen. Der zweite hingegen nimmt die Anzahl der Sekunden seit Beginn des Tages und wandelt sie in Zeit um. Beispiel:

SELECT TIME_TO_SEC ("10:30:20"), SEC_TO_TIME (37820)
Ergebnis: 37820 | 10:30:20

Funktion MAKEDATE (Jahr, n) Nimmt das Jahr Jahr und die Zahl des Tages im Jahr n und wandelt sie in ein Datum um. Beispiel.

SQL – Lektion 13. Datums- und Uhrzeitfunktionen

Diese Funktionen sind für die Arbeit mit Kalenderdatentypen konzipiert. Schauen wir uns die am besten anwendbaren an.
  • CURDATE(), CURTIME() und NOW() Die erste Funktion gibt das aktuelle Datum zurück, die zweite die aktuelle Uhrzeit und die dritte das aktuelle Datum und die aktuelle Uhrzeit. Vergleichen:

    SELECT CURDATE(), CURTIME(), NOW();


    Die Funktionen CURDATE() und NOW() sind nützlich, um Datensätze zur Datenbank hinzuzufügen, die die aktuelle Zeit verwenden. In unserem Shop erfolgt für alle Lieferungen und Verkäufe die aktuelle Uhrzeit. Um Datensätze zu Lieferungen und Verkäufen hinzuzufügen, ist es daher praktisch, die Funktion CURDATE() zu verwenden. Nehmen wir zum Beispiel an, ein Produkt ist in unserem Geschäft eingetroffen, dann fügen wir der Tabelle „Lieferung (eingehend)“ Informationen darüber hinzu:

    INSERT INTO incoming (id_vendor, date_incoming) VALUES ("2", curdate());


    Wenn wir das Lieferdatum als Daten-Zeit-Typ speichern würden, wäre die Funktion NOW() für uns besser geeignet.

  • ADDDATE(date, INTERVAL value) Die Funktion gibt ein Datum mit einem hinzugefügten Wert zurück. Der Wertwert kann negativ sein, dann verringert sich das Enddatum. Mal sehen, wann unsere Lieferanten Waren geliefert haben:

    SELECT id_vendor, date_incoming FROM incoming;


    Gehen wir davon aus, dass wir bei der Eingabe des Datums für den ersten Lieferanten einen Fehler gemacht haben, reduzieren wir dessen Datum um einen Tag:
    Der Wert kann nicht nur Tage, sondern auch Wochen (WEEK), Monate (MONTH), Quartale (QUARTER) und Jahre (YEAR) sein. Verkürzen wir beispielsweise den Liefertermin für den zweiten Lieferanten um 1 Woche:
    In unserer Tabelle „Lieferungen (eingehend)“ haben wir den Datumstyp für die Spalte „Lieferdatum“ (date_incoming) verwendet. Wie Sie sich aus Lektion 2 erinnern, dient dieser Datentyp nur zum Speichern von Datumsangaben. Wenn wir aber den Typ datatime verwenden würden, würden wir nicht nur das Datum, sondern auch die Uhrzeit anzeigen. Dann könnten wir die ADDDATE-Funktion auch für die Zeit verwenden. Der Wert kann in diesem Fall Sekunden (SECOND), Minuten (MINUTE), Stunden (HOUR) und deren Kombinationen sein:
    Minuten und Sekunden (MINUTE_SECOND),
    Stunden, Minuten und Sekunden (HOUR_SECOND),
    Stunden und Minuten (HOUR_MINUTE),
    Tage, Stunden, Minuten und Sekunden (DAY_SECOND),
    Tage, Stunden und Minuten (DAY_MINUTE),
    Tage und Stunden (DAY_HOUR),
    Jahre und Monate (YEAR_MONTH).
    Fügen wir zum Beispiel dem 15. April 2011 zwei Stunden und 45 Minuten hinzu:

    SELECT ADDDATE("2011-04-15 00:02:00", INTERVAL "02:45" HOUR_MINUTE);



  • Die Funktion SUBDATE(Datum, INTERVAL-Wert) ist mit der vorherigen identisch, führt jedoch eine Subtraktionsoperation anstelle einer Addition durch.

    SELECT SUBDATE("2011-04-15 00:02:00", INTERVAL "23:53" HOUR_MINUTE);



  • Die Funktion PERIOD_ADD(period, n) fügt dem Datumswertzeitraum n Monate hinzu. Hinweis: Der Datumswert muss im Format JJJJMM vorliegen. Fügen wir dem Februar 2011 (201102) zwei Monate hinzu:

    SELECT PERIOD_ADD(201102, 2);



  • TIMESTAMPADD(Intervall, n, Datum) Die Funktion fügt dem Datumsdatum ein Zeitintervall n hinzu, dessen Werte durch den Intervallparameter angegeben werden. Mögliche Werte für den Intervallparameter:

    FRAC_SECOND – Mikrosekunden
    ZWEITE - Sekunden
    MINUTE - Minuten
    STUNDE - Stunden
    TAG – Tage
    WOCHE - Wochen
    MONAT - Monate
    VIERTEL - Blöcke
    JAHR – Jahre

    SELECT TIMESTAMPADD(DAY, 2, „2011-04-02“);



  • TIMEDIFF(date1, date2) berechnet die Differenz in Stunden, Minuten und Sekunden zwischen zwei Datumsangaben.

    SELECT TIMEDIFF("2011-04-17 23:50:00", "2011_04-16 14:50:00");



  • DATEDIFF(date1, date2) berechnet die Differenz in Tagen zwischen zwei Datumsangaben. Wir möchten beispielsweise herausfinden, wie lange es her ist, dass uns der Lieferant „Williams“ (id=1) mit Waren beliefert hat:

  • Die Funktion PERIOD_DIFF(period1, period2) berechnet die Differenz in Monaten zwischen zwei im Format JJJJMM dargestellten Daten. Lassen Sie uns den Unterschied zwischen Januar 2010 und August 2011 herausfinden:

    SELECT PERIOD_DIFF(201108, 201001);



  • TIMESTAMPDIFF(Intervall, Datum1, Datum2) Die Funktion berechnet die Differenz zwischen den Daten Datum2 und Datum1 in den im Intervallparameter angegebenen Einheiten. Mögliche Werte für den Intervallparameter:

    FRAC_SECOND – Mikrosekunden
    ZWEITE - Sekunden
    MINUTE - Minuten
    STUNDE - Stunden
    TAG – Tage
    WOCHE - Wochen
    MONAT - Monate
    VIERTEL - Blöcke
    JAHR – Jahre

    SELECT TIMESTAMPDIFF(DAY, „2011-04-02“, „2011-04-17“) AS days, TIMESTAMPDIFF(HOUR, „2011-04-16 20:14:00“, „2011-04-17 23:58 :20") AS-Stunden;



  • Die Funktion SUBTIME(Datum, Uhrzeit) subtrahiert die Zeit vom Datum und der Uhrzeit:

    SELECT SUBTIME("2011-04-18 23:17:00", "02:15:30");



  • DATE(datetime) gibt das Datum zurück und kürzt die Uhrzeit. Zum Beispiel:

    DATUM AUSWÄHLEN("2011-04-15 00:03:20");



  • TIME(datetime) gibt die Uhrzeit zurück und kürzt das Datum. Zum Beispiel:

    SELECT TIME("2011-04-15 00:03:20");



  • Die Funktion TIMESTAMP(date) übernimmt das Datum und gibt es zurück Vollversion mit der Zeit. Zum Beispiel:

    SELECT TIMESTAMP("2011-04-17");



  • DAY(date) und DAYOFMONTH(date) sind synonyme Funktionen, die die fortlaufende Nummer des Tages des Monats aus dem Datum zurückgeben:

    SELECT DAY("2011-04-17"), DAYOFMONTH("2011-04-17");



  • DAYNAME(Datum), DAYOFWEEK(Datum) und WEEKDAY(Datum) Funktionen geben den Wochentag zurück, die erste – ihren Namen, die zweite – die Nummer des Wochentags (Zählung von 1 – Sonntag bis 7 – Samstag), die dritte – die Nummer des Wochentags (Zählung). von 0 - Montag bis 6 - Sonntag:

    SELECT DAYNAME("17.04.2011"), DAYOFWEEK("17.04.2011"), WEEKDAY("17.04.2011");



  • WEEK(Datum), WEEKOFYEAR(DatumUhrzeit) Beide Funktionen geben die Nummer der Woche im Jahr zurück, die erste für den Datumstyp und die zweite für den Datums-/Uhrzeittyp, die erste hat eine Woche, die am Sonntag beginnt, die zweite – ab Montag:

    SELECT WEEK("2011-04-17"), WEEKOFYEAR("2011-04-17 23:40:00");



  • MONTH(Datum) und MONTHNAME(Datum) Beide Funktionen geben Monatswerte zurück. Der erste ist sein numerischer Wert (von 1 bis 12), der zweite ist der Name des Monats:

    SELECT MONTH("2011-04-17"), MONTHNAME("2011-04-17");



  • Die Funktion QUARTER(date) gibt den Wert des Quartals des Jahres zurück (von 1 bis 4):

    SELECT QUARTER("2011-04-17");



  • Die Funktion YEAR(date) gibt den Jahreswert zurück (von 1000 bis 9999):

    SELECT YEAR("2011-04-17");



  • DAYOFYEAR(date) gibt die Ordnungszahl des Tages im Jahr zurück (von 1 bis 366):

    SELECT DAYOFYEAR("2011-04-17");



  • HOUR(datetime) gibt den Stundenwert für die Zeit (0 bis 23) zurück:

    SELECT HOUR("2011-04-17 18:20:03");



  • MINUTE(datetime) gibt den Minutenwert für die Zeit zurück (von 0 bis 59): SELECT UNIX_TIMESTAMP("2011-04-17"), FROM_UNIXTIME(1302524000);

  • TIME_TO_SEC(time) und SEC_TO_TIME(n) reziproke Funktionen. Der erste wandelt die Zeit in die Anzahl der Sekunden um, die seit Beginn des Tages vergangen sind. Der zweite hingegen nimmt die Anzahl der Sekunden vom Beginn des Tages und rechnet sie in Zeit um:

    SELECT TIME_TO_SEC("22:10:30"), SEC_TO_TIME(45368);



  • Die Funktion MAKEDATE(year, n) nimmt das Jahr und die Tageszahl im Jahr und wandelt sie in ein Datum um:

    SELECT MAKEDATE(2011, 120);



Nun, das ist alles für heute. Das nächste Mal schauen wir uns Funktionen an, die dabei helfen, Datumsangaben von einem Format in ein anderes zu konvertieren.

Transact-SQL-Sprachfunktionen können aggregiert oder skalar sein. Diese Arten von Funktionen werden in diesem Artikel besprochen.

Aggregatfunktionen

Aggregatfunktionen führen Berechnungen für eine Gruppe von Spaltenwerten durch und geben als Ergebnis dieser Berechnungen immer einen einzelnen Wert zurück. Transact-SQL unterstützt mehrere gängige Aggregatfunktionen:

Durchschnittlich

Berechnet den arithmetischen Durchschnitt der in einer Spalte enthaltenen Daten. Die Werte, für die die Berechnung durchgeführt wird, müssen numerisch sein.

MIN und MAX

Bestimmt den Maximal- und Minimalwert aller in einer Spalte enthaltenen Datenwerte. Werte können numerisch, als Zeichenfolge oder zeitlich (Datum/Uhrzeit) sein.

SUMME

Berechnet die Gesamtsumme der Werte in einer Spalte. Die Werte, für die die Berechnung durchgeführt wird, müssen numerisch sein.

ZÄHLEN

Zählt die Anzahl der Nicht-Null-Werte in einer Spalte. Die Funktion count(*) ist die einzige Aggregatfunktion, die keine Berechnungen für Spalten durchführt. Diese Funktion gibt die Anzahl der Zeilen zurück (unabhängig davon, ob einzelne Spalten Nullwerte enthalten).

COUNT_BIG

Ähnlich der Zählfunktion, mit dem Unterschied, dass sie einen BIGINT-Datenwert zurückgibt.

Die Verwendung regulärer Aggregatfunktionen in einer SELECT-Anweisung wird in einem zukünftigen Artikel besprochen.

Skalarfunktionen

Transact-SQL-Skalarfunktionen werden zum Erstellen skalarer Ausdrücke verwendet. (Eine Skalarfunktion führt Berechnungen für einen einzelnen Wert oder eine Werteliste durch, während eine Aggregatfunktion Berechnungen für eine Gruppe von Werten über mehrere Zeilen durchführt.) Skalarfunktionen können in die folgenden Kategorien unterteilt werden:

    numerische Funktionen;

    Datumsfunktionen;

    String-Funktionen;

    Systemfunktionen;

    Metadatenfunktionen.

Diese Funktionstypen werden in den folgenden Abschnitten erläutert.

Numerische Funktionen

Numerische Transact-SQL-Funktionen sind mathematische Funktionen zum Ändern numerischer Werte. Eine Liste der numerischen Funktionen und ihre kurzen Beschreibungen finden Sie in der folgenden Tabelle:

Numerische Transact-SQL-Funktionen
Funktion Syntax Beschreibung Anwendungsbeispiel
Abs ABS(n)

Gibt den absoluten Wert zurück (d. h. negative Werte werden als positiv zurückgegeben) numerischer Ausdruck n.

SELECT ABS(-5.320) – Gibt 5,320 zurück. SELECT ABS(8,90) – Gibt 8,90 zurück

ACOS, ASIN, ATAN, ATN2 ACOS(n), ASIN(n), ATAN(n), ATN2(n, m)

Inverse trigonometrische Funktionen, die den Arkuskosinus, den Arkussinus und den Arkustangens des Wertes n berechnen (für ATN2 wird der Arkustangens n/m berechnet). Die Eingabewerte n, m und das Ergebnis sind vom Datentyp FLOAT.

COS, SIN, TAN, COT COS(n), SIN(n), TAN(n), COT(n)

Trigonometrische Funktionen, die Kosinus, Sinus, Tangens und Kotangens des Wertes n berechnen. Das Ergebnis hat den Datentyp FLOAT.

GRAD, RADIANT GRAD(n), RADIANT(n)

Die DEGREES-Funktion wandelt Bogenmaß in Grad bzw. RADIANT um und umgekehrt.

SELECT DEGREES(PI() / 4) – Gibt 45 zurück. SELECT COS(RADIANS(60.0)) – Gibt 0,5 zurück

DECKE DECKE(n)

Rundet eine Zahl auf einen höheren ganzzahligen Wert.

SELECT CEILING(-5.320) – Gibt -5 zurück. SELECT CEILING(8.90) – Gibt 9 zurück

RUNDEN RUND(n, p, [t])

Rundet den Wert von n auf das nächste p. Wenn das Argument p positive Zahl, wird der Bruchteil der Zahl n gerundet, und wenn er negativ ist, wird der ganzzahlige Teil gerundet. Bei Verwendung des optionalen Arguments t wird die Zahl n nicht gerundet, sondern gekürzt (also abgerundet).

SELECT ROUND(5.3208, 3) – Gibt 5,3210 zurück. SELECT ROUND(125.384, -1) – Gibt 130.000 zurück. SELECT ROUND(125.384, -1, 1) – Gibt 120.000 zurück

BODEN ETAGE(n)

Rundet auf den niedrigsten ganzzahligen Wert ab.

SELECT FLOOR(5.88) – Gibt 5 zurück

EXP EXP(n)

Berechnet den Wert von e n .

LOG, LOG10 LOG(n), LOG10(n)

LOG(n) – berechnet den natürlichen Logarithmus (d. h. Basis e) der Zahl n, LOG10(n) – berechnet den dezimalen Logarithmus (Basis 10) der Zahl n.

PI. PI()

Gibt den Wert von π (3,1415) zurück.

LEISTUNG POWER(x, y)

Berechnet den Wert von x y .

RAND RAND()

Gibt eine beliebige Zahl vom Typ FLOAT im Wertebereich zwischen 0 und 1 zurück.

ROWCOUNT_BIG ROWCOUNT_BIG()

Gibt die Anzahl der verarbeiteten Tabellenzeilen zurück letzte Anweisung Vom System ausgeführtes Transact-SQL. Der Rückgabewert ist vom Typ BIGINT.

ZEICHEN ZEICHEN(n)

Gibt das Vorzeichen von n als Zahl zurück: +1, wenn positiv, -1, wenn negativ.

QUADRATISCH, QUADRATISCH SQRT(n), SQUARE(n)

SQRT(n) – berechnet die Quadratwurzel der Zahl n, SQUARE(n) – gibt das Quadrat des Arguments n zurück.

Datumsfunktionen

Datumsfunktionen werten die entsprechenden Datums- oder Uhrzeitteile eines Ausdrucks aus oder geben einen Zeitintervallwert zurück. Unterstützt in Transact- SQL-Funktionen Die Termine und ihre Kurzbeschreibungen finden Sie in der folgenden Tabelle:

Transact-SQL-Datumsfunktionen
Funktion Syntax Beschreibung Anwendungsbeispiel
VERABREDUNG BEKOMMEN VERABREDUNG BEKOMMEN()

Gibt das aktuelle Systemdatum und die aktuelle Systemzeit zurück.

SELECT GETDATE()

DATEPART DATEPART (Element, Datum)

Gibt den im Elementparameter angegebenen Datumsteil als Ganzzahl zurück.

Gibt 1 (Januar) zurück. SELECT DATEPART(Monat, „01.01.2012“) – Gibt 4 (Mittwoch) zurück. SELECT DATEPART(Wochentag, „01.02.2012“)

DATUMNAME DATENAME (Element, Datum)

Gibt den im Elementparameter angegebenen Datumsteil als Zeichenfolge zurück.

Gibt Januar zurück SELECT DATENAME(Monat, „01/01/2012“) – Gibt Mittwoch zurück SELECT DATENAME(Wochentag, „01/02/2012“)

DATEDIFF DATEDIFF (Element, dat1, dat2)

Berechnet die Differenz zwischen zwei Datumsteilen dat1 und dat2 und gibt ein ganzzahliges Ergebnis in den im Elementargument angegebenen Einheiten zurück.

Gibt 19 (19-Jahres-Intervall zwischen Datumsangaben) zurück. SELECT DATEDIFF(Jahr, „01/01/1990“, „01/01/2010“) – Gibt 7305 (7305 Tagesintervall zwischen Datumsangaben) zurück. SELECT DATEDIFF(Tag, „01/01 /1990“, „01/01“ .2010“)

DATUM HINZUFÜGEN DATEADD (Artikel, n, Datum)

Fügt hinzu n-te Menge Einheiten, die im Elementargument für das angegebene Datumsdatum angegeben sind. (n kann auch negativ sein.)

Addiert 3 Tage zum aktuellen Datum SELECT DATEADD(day, 3, GETDATE())

String-Funktionen

String-Funktionen manipulieren Spaltenwerte, bei denen es sich typischerweise um Zeichendatentypen handelt. Die unterstützten Zeichenfolgenfunktionen in Transact-SQL und ihre kurzen Beschreibungen sind in der folgenden Tabelle aufgeführt:

Transact-SQL-String-Funktionen
Funktion Syntax Beschreibung Anwendungsbeispiel
ASCII, UNICODE ASCII(char), UNICODE(char)

Konvertiert das angegebene Zeichen in die entsprechende ASCII-Code-Ganzzahl.

SELECT ASCII("W") -- 87 SELECT UNICODE("u") -- 1102

CHAR, NCHAR CHAR(int), NCHAR(int)

Konvertiert einen ASCII-Code (oder Unicode, wenn NCHAR) in das entsprechende Zeichen.

SELECT CHAR(87) – „W“ SELECT NCHAR(1102) – „yu“

CHARINDEX CHARINDEX (str1, str2)

Gibt die Startposition des Vorkommens des Teilstrings str1 im String str2 zurück. Wenn der String str2 den Teilstring str1 nicht enthält, wird der Wert 0 zurückgegeben

Gibt 5 SELECT CHARINDEX ("Morph", "Polymorphismus") zurück.

UNTERSCHIED UNTERSCHIED (str1, str2)

Gibt eine Ganzzahl zwischen 0 und 4 zurück, die die Differenz zwischen den SOUNDEX-Werten der beiden Zeichenfolgen str1 und str2 darstellt. Die SOUNDEX-Methode gibt eine Zahl zurück, die den Klang der Saite charakterisiert. Mit dieser Methode können Sie ähnlich klingende Saiten identifizieren. Funktioniert nur für ASCII-Zeichen.

Gibt 2 SELECT DIFFERENCE („Rechtschreibung“, „Telling“) zurück

LINKS RECHTS LINKS (str, Länge), RECHTS (str, Länge)

Gibt die Anzahl der ersten Zeichen der durch den Längenparameter angegebenen Zeichenfolge str für LEFT und die letzten Zeichen der Zeichenfolge str für die RIGHT-Funktion zurück.

DECLARE @str nvarchar(30) = "Synchronisation"; – Gibt „Sync“ zurück. SELECT LEFT(@str, 4) – Gibt „Zation“ zurück. SELECT RIGHT(@str, 5)

LEN LEN(str)

Gibt die Anzahl der Zeichen (nicht die Anzahl der Bytes) der im Argument angegebenen Zeichenfolge str zurück, einschließlich nachfolgender Leerzeichen.

UNTEN, OBEN LOWER(str), UPPER(str)

Die LOWER-Funktion wandelt alle Großbuchstaben in str1 in Kleinbuchstaben um. Kleinbuchstaben und andere in der Zeichenfolge enthaltene Zeichen sind nicht betroffen. Die UPPER-Funktion wandelt alle Kleinbuchstaben in der Zeichenfolge str in Großbuchstaben um.

DECLARE @str nvarchar(30) = "Synchronisation"; – Gibt „SYNCHRONIZATION“ zurück SELECT UPPER(@str) – Gibt „synch“ zurück SELECT LOWER(@str)

LTRIM, RTRIM LTRIM(str), RTRIM(str)

Die LTRIM-Funktion entfernt führende Leerzeichen in der Zeichenfolge str, RTRIM entfernt jeweils Leerzeichen am Ende der Zeichenfolge.

ZITATNAME QUOTENNAME(char_string)

Gibt eine Unicode-codierte Zeichenfolge mit hinzugefügten Trennzeichen zurück, um die Eingabezeichenfolge in einen gültigen durch Trennzeichen getrennten Bezeichner umzuwandeln.

DECLARE @str nvarchar(30) = "Synchronisation"; -- Rückgabe „[Sync]“ SELECT QUOTENAME(@str)

PATINDEX PATINDEX (%p%, expr)

Gibt die Startposition des ersten Vorkommens des Musters p im angegebenen Ausdruck zurück oder Null, wenn das Muster nicht gefunden wird.

Gibt 4 zurück SELECT PATINDEX("%chro%", "Synchronization")

ERSETZEN ERSETZEN (str1, str2, str3)

Ersetzt alle Vorkommen der Teilzeichenfolge str2 in der Zeichenfolge str1 durch die Teilzeichenfolge str3.

Gibt „Desynchronization“ zurück. SELECT REPLACE(„Synchronization“, „Synchronization“, „Desynchronization“)

REPLIZIEREN REPLICATE (str, i)

Wiederholt die Zeichenfolge str i-mal.

Gibt „aBaBaBaBaB“ zurück. SELECT REPLICATE(“aB“, 5)

UMKEHREN RÜCKWÄRTS (str)

Gibt die Zeichenfolge str in umgekehrter Reihenfolge aus.

Gibt „yaitsazinorkhniS“ zurück. SELECT REVERSE(„Synchronisation“)

SOUNDEX SOUNDEX (str)

Gibt einen vierstelligen Soundex-Code zurück, der verwendet wird, um zu bestimmen, ob zwei Zeichenfolgen ähnlich sind. Funktioniert nur für ASCII-Zeichen.

RAUM SPACE (Länge)

Gibt eine Zeichenfolge aus Leerzeichen mit der im Längenparameter angegebenen Länge zurück. Ähnlich wie REPLICATE(" ", Länge).

STR STR (f[, len[, d]])

Konvertiert den angegebenen Gleitkommaausdruck f in eine Zeichenfolge, wobei len die Länge der Zeichenfolge einschließlich Dezimalpunkt, Vorzeichen, Ziffern und Leerzeichen ist (standardmäßig 10) und d die Anzahl der zurückzugebenden Dezimalstellen ist.

Gibt „3.14“ zurück. SELECT STR (3.1415, 4, 2)

SACHEN STUFF (str1, a, Länge, str2)

Entfernt Längenzeichen aus der Zeichenfolge str1, beginnend an Position a, und fügt an ihrer Stelle die Zeichenfolge str2 ein.

Notiz in einem Buch SELECT STUFF("Notebook", 5, 0," in a ") -- Handbook SELECT STUFF("Notebook", 1, 4, "Hand")

SUBSTRING SUBSTRING (str1, a, Länge)

Extrahiert aus dem String str, beginnend an Position a, einen Teilstring der Länge length.

Systemfunktionen

Transact-SQL-Systemfunktionen stellen umfangreiche Informationen zu Datenbankobjekten bereit. Die meisten Systemfunktionen verwenden eine interne numerische Kennung (ID), die jedem Datenbankobjekt beim Erstellen zugewiesen wird. Mithilfe dieser Kennung kann das System jedes Datenbankobjekt eindeutig identifizieren.

Die folgende Tabelle listet einige der wichtigsten Systemfunktionen mit ihren jeweiligen Funktionen auf kurze Beschreibung:

Transact-SQL-Systemfunktionen
Funktion Syntax Beschreibung Anwendungsbeispiel
GIESSEN CAST (w AS-Typ [(Länge)]

Konvertiert den Ausdruck w in angegebenen Typ Datentyp (falls möglich). Das Argument w kann ein beliebiger gültiger Ausdruck sein.

Gibt 3 SELECT CAST (3.1258 AS INT) zurück.

VERSCHMELZEN KOALESZIEREN (a1, a2)

Gibt den ersten Ausdruckswert aus der Liste der Ausdrücke a1, a2, ... zurück, der nicht null ist.

COL_LENGTH COL_LENGTH (obj, col)

Gibt die Länge der Spalte col des Datenbankobjekts (Tabelle oder Ansicht) obj zurück.

Gibt 4 zurück SELECT COL_LENGTH("Employee", "Id")

KONVERTIEREN CONVERT (Typ[(Länge)], w)

Entspricht der CAST-Funktion, die Argumente werden jedoch anders angegeben. Kann mit jedem Datentyp verwendet werden.

AKTUELLER ZEITSTEMPEL AKTUELLER ZEITSTEMPEL

Gibt das aktuelle Datum und die aktuelle Uhrzeit zurück.

AKTUELLER_BENUTZER AKTUELLER_BENUTZER

Gibt den Namen des aktuellen Benutzers zurück.

DATENLÄNGE DATENLÄNGE(z)

Gibt die Anzahl der vom Ausdruck z belegten Bytes zurück.

Diese Abfrage gibt die Länge jedes Feldes SELECT DATALENGTH(FirstName) FROM Employee zurück

GETANSINUL GETANSINULL("Datenbankname")

Gibt 1 zurück, wenn die Verwendung von Nullwerten in der Datenbank dbname dem ANSI SQL-Standard entspricht.

IST NULL ISNULL (Ausdruck, Wert)

Gibt den Wert von expr zurück, wenn dieser nicht NULL ist; andernfalls wird der Wert zurückgegeben.

ISNUMERISCH ISNUMERIC (expr)

Bestimmt, ob der Ausdruck expr ein gültiger numerischer Typ ist.

NEUID NEWID()

Erstellt eine eindeutige Identifikationsnummer-ID, die aus einer 16-Byte-Binärzeichenfolge besteht, die zum Speichern von Werten des Datentyps UNIQUEIDENTIFIER dient.

NEWSEQUENTIALID NEWSEQUENTIALID()

Erstellt eine GUID, die größer ist als alle anderen GUIDs, die zuvor von dieser Funktion auf dem angegebenen Computer erstellt wurden. (Diese Funktion kann nur als Standardwert für eine Spalte verwendet werden.)

NULLWENN NULLIF (Ausdruck1, Ausdruck2)

Gibt null zurück, wenn die Werte von expr1 und expr2 gleich sind.

Die Abfrage gibt NULL für ein Projekt zurück – dessen Nummer = „p1“ SELECT NULLIF(Number, „p1“) FROM Project

SERVERPROPERTY SERVERPROPERTY (Eigenschaftsname)

Gibt Informationen über die Eigenschaften des Datenbankservers zurück.

SYSTEM_USER SYSTEM_USER

Gibt die ID des aktuellen Benutzers zurück.

BENUTZER-ID BENUTZER-ID()

Gibt die Benutzer-ID Benutzername zurück. Wenn kein Benutzer angegeben ist, wird die aktuelle Benutzer-ID zurückgegeben.

NUTZERNAME NUTZERNAME()

Gibt den Benutzernamen mit der angegebenen ID zurück. Wenn kein Bezeichner angegeben ist, wird der Name des aktuellen Benutzers zurückgegeben.

Metadatenfunktionen

Grundsätzlich geben Metadatenfunktionen Informationen über eine bestimmte Datenbank und Datenbankobjekte zurück. Die folgende Tabelle fasst einige der wichtigsten Metadatenfunktionen zusammen mit ihren kurzen Beschreibungen zusammen:

Transact-SQL-Metadatenfunktionen
Funktion Syntax Beschreibung Anwendungsbeispiel
COL_NAME COL_NAME (tab_id, col_id)

Gibt den Namen der Spalte mit dem angegebenen Bezeichner col_id der Tabelle mit dem Bezeichner tab_id zurück.

Gibt den Namen der Spalte „LastName“ zurück. SELECT COL_NAME (OBJECT_ID(„Employee“), 3)

COLUMNPROPERTY COLUMNPROPERTY (ID, Spalte, Eigenschaft)

Gibt Informationen über die angegebene Spalte zurück.

Gibt den Wert der PRECISION-Eigenschaft zurück – für die Id-Spalte der Employee-Tabelle SELECT COLUMNPROPERTY (OBJECT_ID("Employee"), "Id", "precision")

DATABASEPROPERTY DATABASEPROPERTY (Datenbank, Eigenschaft)

Gibt den Wert der Eigenschaft der Datenbankeigenschaft zurück.

Gibt den Wert der IsNullConcat-Eigenschaft zurück – für die SampleDb-Datenbank SELECT DATABASEPROPERTY („SampleDb“, „IsNullConcat“)

DB_ID DB_ID()

Gibt die Datenbank-ID db_name zurück. Wenn kein Datenbankname angegeben ist, wird die ID der aktuellen Datenbank zurückgegeben.

DB_NAME DB_NAME()

Gibt den Namen der Datenbank zurück, die db_id hat. Wenn kein Bezeichner angegeben ist, wird der Name der aktuellen Datenbank zurückgegeben.

INDEX_COL INDEX_COL (Tabelle, i, nein)

Gibt den Namen der indizierten Spalte der Tabelle Tabelle zurück. Eine Spalte wird durch die Indexkennung i und die Spaltenposition Nr. in diesem Index angegeben.

INDEXPROPERTY INDEXPROPERTY (obj_id, index_name, Eigenschaft)

Gibt die Eigenschaften eines benannten Index oder einer benannten Statistik für die angegebene Tabellen-ID-Nummer, den Namen des Index oder der Statistik und den Namen der Eigenschaft zurück.

OBJEKTNAME OBJECT_NAME (obj_id)

Gibt den Namen des Datenbankobjekts zurück, das den Bezeichner obj_id hat.

SELECT OBJECT_NAME(245575913);

OBJEKT IDENTIFIKATION OBJECT_ID (obj_name)

Gibt den Objektbezeichner obj_name der Datenbank zurück.

Gibt 245575913 zurück – Mitarbeitertabellen-ID SELECT OBJECT_ID("Employee")

OBJEKTEIGENSCHAFT OBJECTPROPERTY (obj_id, Eigenschaft)

Gibt Informationen zu Objekten aus der aktuellen Datenbank zurück.

Abrufen des aktuellen Datums und der aktuellen Uhrzeit

Um das aktuelle Datum (ohne Uhrzeit) im Format JJJJ-MM-TT zu erhalten, können Sie die Funktionen verwenden:

  • CURDATE()
  • AKTUELLES DATUM()

Um die aktuelle Uhrzeit (ohne Datum) im Format HH:MM:SS zu erhalten, können Sie die Funktionen verwenden:

  • CURTIME()
  • AKTUELLE UHRZEIT()

Um das aktuelle Datum und die aktuelle Uhrzeit im Format JJJJ-MM-TT HH:MM:SS zu erhalten, können Sie eine der folgenden Funktionen verwenden:

  • JETZT()
  • SYSDATE()
  • AKTUELLER ZEITSTEMPEL

Beispiel 1

SELECT CURDATE(); oder SELECT CURRENT_DATE();

Ergebnis: 28.08.2016

SELECT CURTIME(); oder SELECT CURENT_TIME();

Ergebnis: 19:29:54

JETZT AUSWÄHLEN(); oder SELECT SYSDATE(); oder SELECT CURRENT_TIMESTAMP;

Ergebnis: 28.08.2016 19:29:54

Addieren und Subtrahieren eines Zeitintervalls

Bei Datums- und Uhrzeitangaben müssen Sie oft arithmetische Operationen durchführen: Addieren oder subtrahieren Sie ein bestimmtes Zeitintervall zu einem bestimmten Datum. Das Hinzufügen eines Zeitintervalls kann auf drei Arten erfolgen:

  • Funktion DATE_ADD(original_date, INTERVAL-Ausdruckstyp);
  • Funktion ADDDATE(original_date, INTERVAL-Ausdruckstyp);
  • Ausdruck: Quelldatum + Ausdruckstyp INTERVAL.

Das Subtrahieren eines Zeitintervalls kann auch auf drei Arten erfolgen:

  • Funktion DATE_SUB(source_date, INTERVAL expression type);
  • Funktion SUBDATE(source_date, INTERVAL expression type);
  • Ausdruck: Quelldatum – INTERVAL-Ausdruckstyp.

Quelldatum ist ein Datum, zu dem ein bestimmtes Zeitintervall addiert oder subtrahiert wird. Ausdruck– Dies ist das addierte oder subtrahierte Zeitintervall selbst, angegeben im Textformat. Typ– ein Argument, das den Typ des hinzuzufügenden Intervalls angibt. Diese Option gibt an, wie der Ausdruck richtig interpretiert wird. Beispielsweise kann der Ausdruck „3:24“ entweder als 3 Stunden 24 Minuten oder als 3 Minuten 24 Sekunden interpretiert werden. Wenn der Typ „MINUTE_SECOND“ angegeben wird, ist die Interpretation eindeutig. Die Beziehung zwischen den Ausdrucks- und Typargumenten ist in der Tabelle dargestellt:

Beispiel 2

Die nächsten drei Befehle führen denselben Vorgang aus. Sie addieren eine Sekunde zur angegebenen Zeit.

WÄHLEN Sie „2016-09-10 23:59:59“ + Intervall 1 SEKUNDE;

SELECT ADDDATE("2016-09-10 23:59:59", Intervall 1 SEKUNDE);

SELECT DATE_ADD("2016-09-10 23:59:59", Intervall 1 SEKUNDE);

Das Ergebnis aller drei Teams ist das gleiche: 11.09.2016 00:00:00.

Beispiel 3

Die folgenden drei Befehle berechnen ein Datum, das genau eineinhalb Jahre vor einem bestimmten Datum liegt:

SELECT DATE_SUB("2016-09-10 23:59:59", Intervall "1-6" YEAR_MONTH);

SELECT SUBDATE("2016-09-10 23:59:59", Intervall "1-6" YEAR_MONTH);

SELECT „2016-09-10 23:59:59“ – Intervall „1-6“ YEAR_MONTH;

Das Ergebnis aller drei Teams ist das gleiche: 10.03.2015 23:59:59.

Umrechnungsfunktionen in andere Einheiten

Manchmal ist es praktisch, mit einem Datum zu arbeiten, das als Anzahl der seit Jahr 0 vergangenen Tage dargestellt wird. Um ein Datum in dieses Format und zurück in MySQL zu konvertieren, gibt es zwei Funktionen:

  • Heutiges Datum) – gibt die Tagesnummer zurück, die dem Datumsargument entspricht.
  • FROM_DAYS(day_number)– gibt das Datum entsprechend der Tagesnummer zurück.


Freunden erzählen