Transact-SQL-Funktionen. SQL - Datumsfunktionen T SQL-Funktionen zum Arbeiten mit Datumsangaben

SQL arbeitet mit Datumsangaben– ist so wichtig, dass Sie bei keinem sinnvollen Projekt auf Kenntnisse der grundlegenden SQL-Operatoren verzichten können. Was auch immer man sagen mag, bei allen Dienstleistungen muss mit der Zeit gearbeitet werden. In der Regel handelt es sich dabei um die Berechnung von Zeiträumen von einem Datum zum anderen, beispielsweise die Anzeige einer Liste der registrierten Benutzer für ein Jahr, einen Monat, einen Tag, eine Stunde.

Ich möchte eine Reihe von Lösungen für häufige Aufgaben im Zusammenhang mit der Arbeit mit Datumsangaben in SQL anbieten, mit denen ich selbst täglich konfrontiert werde. Ich hoffe, dass dies für Sie relevant und nützlich ist.

So erhalten Sie das aktuelle Datum in SQL
WHERE date = CURDATE()
oder eine andere Option
WHERE date = STR_TO_DATE(now(), "%Y-%m-%d")

Fügen Sie in SQL eine Stunde zum Datum hinzu
DATE_ADD("2013-03-30", INTERVALL 1 STUNDE)

Fügen Sie einem Datum in SQL einen Tag hinzu
DATE_ADD("30.03.2013", INTERVALL 1 TAG)
Ebenso können Sie dem aktuellen Datum eine beliebige Anzahl von Tagen hinzufügen.

Fügen Sie einem Datum in SQL einen Monat hinzu
DATE_ADD("30.03.2013", INTERVALL 1 MONAT)
Ebenso können Sie dem aktuellen Datum eine beliebige Anzahl von Monaten hinzufügen.

Holen Sie sich den Tag von gestern in SQL
DATE_ADD(CURDATE(), INTERVAL -1 TAG)
oder
DATE_SUB(CURDATE(), INTERVALL 1 TAG)

Startdatum der aktuellen Woche in SQL abrufen
Dies ist auf den ersten Blick eine der schwierigsten Aufgaben, die jedoch sehr einfach gelöst werden kann
CURDATE()-WEEKDAY(CURDATE());

Erhalten Sie eine Auswahl von diesem Montag bis zum aktuellen Wochentag in SQL

Erhalten Sie in SQL eine Auswahl vom ersten Tag des aktuellen Monats bis zum aktuellen Wochentag
WHERE (Datum ZWISCHEN (CURDATE()-WEEKDAY(CURDATE())) UND CURDATE())

So erhalten Sie das Geburtsdatum des Benutzers in SQL
SELECT Name, Geburt, CURRENT_DATE, (YEAR(CURRENT_DATE)-YEAR(birth)) - (RIGHT(CURRENT_DATE,5)

Suchen Sie in SQL nach allen Benutzern, deren Geburtstag nächsten Monat ist
SELECT Name, Geburt FROM Benutzer WHERE MONTH(birth) = MONTH(DATE_ADD(NOW(), INTERVAL 1 MONTH));
oder eine andere Option
SELECT Name, Geburt FROM Haustier WHERE MONTH(birth) = MOD(MONTH(NOW()), 12) + 1;

Zusätzlich zu den oben genannten Fällen zum Arbeiten mit Datumsangaben in SQL empfehle ich Ihnen, die Dokumentation für die folgenden Operatoren zu lesen:
JETZT()– Gibt das aktuelle Datum und die aktuelle Uhrzeit zurück.
CURDATE()– Gibt das aktuelle Datum zurück.
CURTIME()– Wir geben die aktuelle Uhrzeit zurück.
DATUM()– Besteht aus zwei Teilen Datum und Uhrzeit.
EXTRAKT()– Gibt einen einzelnen Datums-/Uhrzeitwert zurück.
DATE_ADD()– Fügt der Stichprobe die angegebene Anzahl an Tagen/Minuten/Stunden usw. hinzu.
DATE_SUB()– Subtrahieren Sie das angegebene Intervall vom Datum.
DATEDIFF()– Gibt den Zeitwert zwischen zwei Datumsangaben zurück.
DATUMSFORMAT()– Funktion zur unterschiedlichen Ausgabe von Zeitinformationen.

Wie sich herausstellt, ist die Arbeit mit Datumsangaben in SQL nicht so schwierig, und anstatt Zeiträume mit PHP zu berechnen, können Sie dies jetzt bereits in der Phase der Ausführung der SQL-Abfrage tun und die erforderliche Datenauswahl erhalten.

Letzte Aktualisierung: 29.07.2017

T-SQL bietet eine Reihe von Funktionen zum Arbeiten mit Datums- und Uhrzeitangaben:

    GETDATE: Gibt das aktuelle lokale Datum und die aktuelle Uhrzeit basierend auf der Systemuhr als Datetime-Objekt zurück

    SELECT GETDATE() – 28.07.2017 21:34:55.830

    GETUTCDATE: Gibt das aktuelle lokale Datum und die aktuelle Uhrzeit in Greenwich Mean Time (UTC/GMT) als Datetime-Objekt zurück

    SELECT GETUTCDATE() – 28.07.2017 18:34:55.830

    SYSDATETIME: Gibt das aktuelle lokale Datum und die aktuelle lokale Uhrzeit basierend auf der Systemuhr zurück, unterscheidet sich jedoch von GETDATE darin, dass Datum und Uhrzeit als datetime2-Objekt zurückgegeben werden

    SELECT SYSDATETIME() – 28.07.2017 21:02:22.7446744

    SYSUTCDATETIME: Gibt das aktuelle lokale Datum und die aktuelle lokale Uhrzeit in Greenwich Mean Time (UTC/GMT) als datetime2-Objekt zurück

    SELECT SYSUTCDATETIME() – 28.07.2017 18:20:27.5202777

    SYSDATETIMEOFFSET: Gibt ein datetimeoffset(7)-Objekt zurück, das das Datum und die Uhrzeit relativ zu GMT enthält

    SELECT SYSDATETIMEOFFSET() -- 28.07.2017 21:02:22.7446744 +03:00

    TAG: Gibt den Tag des Datums zurück, das als Parameter übergeben wird

    SELECT DAY(GETDATE()) – 28

    MONAT: Gibt den Monat eines Datums zurück

    SELECT MONTH(GETDATE()) – 7

    JAHR: Gibt das Jahr eines Datums zurück

    SELECT YEAR(GETDATE()) – 2017

    DATENAME: Gibt den Datumsteil als Zeichenfolge zurück. Der Auswahlparameter für den Datumsteil wird als erster Parameter und das Datum selbst als zweiter Parameter übergeben:

    SELECT DATENAME(month, GETDATE()) – Juli

    Um einen Teil eines Datums zu bestimmen, können Sie die folgenden Parameter verwenden (ihre abgekürzten Versionen sind in Klammern angegeben):

    • Jahr (jj, jjjj): Jahr

      Viertel (qq, q) : Viertel

      Monat (mm, m): Monat

      dayofyear (dy, y): Tag des Jahres

      Tag (dd, d): Tag des Monats

      Woche (wk, ww): Woche

      Wochentag (dw): Wochentag

      Stunde (hh): Stunde

      Minute (mi, n) : Minute

      Sekunde (ss, s) : Sekunde

      Millisekunde (ms): Millisekunde

      Mikrosekunde (mcs): Mikrosekunde

      Nanosekunde (ns): Nanosekunde

      tzoffset (tz): Offset in Minuten relativ zu GMT (für ein datetimeoffset-Objekt)

    DATEPART: Gibt den Datumsteil als Zahl zurück. Der Auswahlparameter für den Datumsteil wird als erster Parameter übergeben (es werden dieselben Parameter wie für DATENAME verwendet) und das Datum selbst wird als zweiter Parameter übergeben:

    SELECT DATEPART(month, GETDATE()) -- 7

    DATEADD: Gibt ein Datum zurück, das das Ergebnis der Addition einer Zahl zu einer bestimmten Datumskomponente ist. Der erste Parameter stellt die oben für die Funktion DATENAME beschriebene Datumskomponente dar. Der zweite Parameter ist die hinzuzufügende Menge. Der dritte Parameter ist das Datum selbst, zu dem Sie Folgendes hinzufügen müssen:

    SELECT DATEADD(Monat, 2, „2017-7-28“) – 2017-09-28 00:00:00.000 SELECT DATEADD(Tag, 5, „2017-7-28“) – 2017-08-02 00 :00:00.000 SELECT DATEADD(Tag, -5, „28.07.2017“) – 23.07.2017 00:00:00.000

    Wenn die hinzugefügte Menge eine negative Zahl darstellt, wird das Datum tatsächlich verringert.

    DATEDIFF: Gibt die Differenz zwischen zwei Datumsangaben zurück. Der erste Parameter ist die Datumskomponente, die angibt, in welchen Einheiten die Differenz gemessen werden soll. Der zweite und dritte Parameter sind die zu vergleichenden Daten:

    SELECT DATEDIFF(Jahr, „2017-7-28“, „2018-9-28“) – Differenz 1 Jahr SELECT DATEDIFF(Monat, „2017-7-28“, „2018-9-28“) – Differenz 14 Monate SELECT DATEDIFF(Tag, „2017-7-28“, „2018-9-28“) – Differenz 427 Tage

    TODATETIMEOFFSET: Gibt einen datetimeoffset-Wert zurück, der das Ergebnis der Addition des Zeitversatzes zu einem anderen datetimeoffset-Objekt ist

    SELECT TODATETIMEOFFSET("28.7.2017 01:10:22", "+03:00")

    SWITCHOFFSET: Gibt einen datetimeoffset-Wert zurück, der das Ergebnis der Addition des Zeitversatzes zu einem datetime2-Objekt ist

    SELECT SWITCHOFFSET(SYSDATETIMEOFFSET(), "+02:30")

    EOMONTH: Gibt das Datum des letzten Tages für den Monat zurück, der im als Parameter übergebenen Datum verwendet wird.

    SELECT EOMONTH("2017-02-05") -- 2017-02-28 SELECT EOMONTH("2017-02-05", 3) -- 2017-05-31

    Als optionalen zweiten Parameter können Sie die Anzahl der Monate übergeben, die zum Datum addiert werden müssen. Dann wird der letzte Tag des Monats als neues Datum berechnet.

    DATEFROMPARTS: Erstellt nach Jahr, Monat und Tag ein Datum

    WÄHLEN SIE DATUM AUS TEILEN (2017, 7, 28) – 28.07.2017

    ISDATE: Testet, ob ein Ausdruck ein Datum ist. Wenn ja, wird 1 zurückgegeben, andernfalls wird 0 zurückgegeben.

    SELECT ISDATE("28.07.2017") -- 1 SELECT ISDATE("07.28.2017") -- 0 SELECT ISDATE("28.07.2017") -- 0 SELECT ISDATE("SQL") - - 0

Ein Beispiel für die Verwendung der Funktionen ist das Erstellen einer Bestelltabelle, die das Bestelldatum enthält:

CREATE TABLE Orders (Id INT IDENTITY PRIMARY KEY, ProductId INT NOT NULL, CustomerId INT NOT NULL, CreatedAt DATE NOT NULL DEFAULT GETDATE(), ProductCount INT DEFAULT 1, Price MONEY NOT NULL);

Der Ausdruck DEFAULT GETDATE() gibt an, dass, wenn beim Hinzufügen von Daten kein Datum angegeben wird, dieses automatisch mit der Funktion GETDATE() berechnet wird.

Ein weiteres Beispiel: Suchen wir nach Bestellungen, die vor 16 Tagen aufgegeben wurden:

SELECT * FROM Orders WHERE DATEDIFF(day, CreatedAt, GETDATE()) = 16

Vom Autor: Heute werden wir darüber sprechen, wie Datumsfunktionen in SQL funktionieren. Die folgende Tabelle enthält eine Liste aller wichtigen verfügbaren Datums- und Uhrzeitfunktionen. Es gibt andere, die von verschiedenen DBMS unterstützt werden. Diese Liste stellt die im MySQL-DBMS verfügbaren Funktionen dar.

DATUM HINZUFÜGEN(). Fügt Daten hinzu

ZEIT HINZUFÜGEN(). Fügt Zeit hinzu

CONVERT_TZ(). Konvertiert von einer Zeitzone in eine andere

CURDATE(). Gibt das aktuelle Datum zurück

CURRENT_DATE(), CURRENT_DATE. Synonyme für CURDATE()

CURRENT_TIME(), CURRENT_TIME. Synonyme für CURTIME()

CURRENT_TIMESTAMP(), CURRENT_TIMESTAMP. Synonyme für JETZT()

CURTIME(). Gibt die aktuelle Uhrzeit zurück

DATE_ADD(). Fügt zwei Daten hinzu

DATUMSFORMAT(). Legt das angegebene Datumsformat fest

DATE_SUB(). Subtrahiert ein Datum von einem anderen

DATUM(). Extrahiert den Datumsteil aus einem Ausdruck, der ein Datum oder eine Uhrzeit und ein Datum darstellt

DATEDIFF(). Subtrahiert ein Datum von einem anderen

TAG(). Synonym für DAYOFMONTH()

TAGNAME(). Gibt den Wochentag zurück

DAYOFMONT(). Gibt den Tag des Monats zurück (1-31)

WOCHENTAG(). Gibt den Index des Wochentags des Arguments zurück

DAYOFYEAR(). Gibt die Nummer des Tages im Jahr zurück (1-366)

EXTRAKT. Ruft den Datumsteil ab

FROM_DAYS(). Wandelt eine Tageszahl in ein Datum um

FROM_UNIXTIME(). Formatiert ein Datum als UNIX-Zeitstempel

STUNDE(). Ruft die Stunde ab

LETZTER TAG. Gibt den letzten Tag des Monats für das Argument zurück

LOCALTIME(), LOCALTIME. Synonym für NOW()

LOCALTIMESTAMP, LOCALTIMESTAMP(). Synonym für NOW()

MAKEDATE(). Erstellt ein Datum aus Jahr und Tag des Jahres

ZEIT SCHAFFEN. ZEIT SCHAFFEN(). MIKROSEKUNDE(). Gibt Mikrosekunden vom Argument zurück

MINUTE(). Gibt Minuten vom Argument zurück

MONAT(). Gibt den Monat eines Datums zurück

MONTHNAME(). Gibt den Namen des Monats zurück

JETZT(). Gibt das aktuelle Datum und die aktuelle Uhrzeit zurück

PERIOD_ADD(). Fügt dem Jahr-Monat einen Punkt hinzu

PERIOD_DIFF(). Gibt die Anzahl der Monate zwischen Perioden zurück

QUARTAL(). Gibt das Viertel aus dem Argument zurück

SEC_TO_TIME(). Konvertiert Sekunden in das Format „HH:MM:SS“.

ZWEITE(). Gibt Sekunden zurück (0-59)

STR_TO_DATE(). Konvertiert eine Zeichenfolge in ein Datum

SUBDATE(). Bei Aufruf mit drei Argumenten das Synonym DATE_SUB()

SUBTIME(). Subtrahiert die Zeit

SYSDATE(). Gibt die Ausführungszeit einer Funktion zurück

ZEITFORMAT(). Legt das Zeitformat fest

TIME_TO_SEC(). Gibt das in Sekunden konvertierte Argument zurück

ZEIT(). Extrahiert den Zeitteil des übergebenen Ausdrucks

TimeDiff(). Subtrahiert die Zeit

TIMESTAMP(). Mit einem Argument gibt diese Funktion einen Datums- oder Datum/Uhrzeit-Ausdruck zurück. Mit zwei Argumenten – fügt diese beiden Argumente hinzu

TIMESTAMPADD(). Fügt einem Datums- und Uhrzeitausdruck ein Intervall hinzu

TIMESTAMPDIFF(). Subtrahiert ein Intervall von einem Datum/Uhrzeit-Ausdruck

TO_DAYS(). Gibt das in Tage konvertierte Datumsargument zurück

UNIX_TIMESTAMP(). Gibt einen UNIX-Zeitstempel zurück

UTC_DATE(). Gibt das aktuelle UTC-Datum zurück

UTC_TIME(). Gibt die aktuelle UTC-Zeit zurück

UTC_TIMESTAMP(). Gibt das aktuelle UTC-Datum und die aktuelle UTC-Uhrzeit zurück

WOCHE(). Gibt die Wochennummer zurück

WOCHENTAG(). Gibt den Index des Wochentags zurück

WEEKOFYEAR(). Gibt die Kalenderwochennummer (1-53) zurück.

JAHR(). Gibt das Jahr zurück

JAHRESWOCHE(). Gibt das Jahr und die Woche zurück

ADDDATE(Datum,INTERVAL-Ausdruckseinheit), ADDDATE(Ausdruck,Tage)

Beim Aufruf mit einem zweiten Argument, das als INTERVAL angegeben ist, ist ADDDATE() ein Synonym für DATE_ADD(). Die zugehörige Funktion SUBDATE() ist ein Synonym für DATE_SUB(). Informationen zum INTERVAL-Blockargument finden Sie unter DATE_ADD().

Beim Aufruf mit dem zweiten Argument in Tagen behandelt MySQL dies als eine ganzzahlige Anzahl von Tagen, die dem Ausdruck hinzugefügt werden.

ADDTIME(expr1,expr2)

ADDTIME() fügt expr2 zu expr1 hinzu und gibt das Ergebnis zurück. Ausdruck1 ist ein Zeit- oder Datum/Uhrzeit-Ausdruck, während Ausdruck2 ein Zeitausdruck ist.

CONVERT_TZ(dt,from_tz,to_tz)

Konvertiert den Datums- und Uhrzeitwert dt aus der in from_tz angegebenen Zeitzone in die in to_tz angegebene Zeitzone und gibt den resultierenden Wert zurück. Diese Funktion gibt NULL zurück, wenn die Argumente ungültig sind.

CURDATE()

Gibt das aktuelle Datum als Wert im Format „JJJJ-MM-TT“ oder JJJJMMTT zurück, je nachdem, ob diese Funktion in einem Zeichenfolgen- oder numerischen Kontext verwendet wird.

CURRENT_DATE und CURRENT_DATE()

CURRENT_DATE und CURRENT_DATE() sind Synonyme für CURDATE()

CURTIME()

Gibt die aktuelle Uhrzeit als Wert im Format „HH:MM:SS“ oder HHMMSS zurück, je nachdem, ob die Funktion in einem String- oder numerischen Kontext verwendet wird. Der Wert wird für die aktuelle Zeitzone ausgedrückt.

CURRENT_TIME und CURRENT_TIME()

CURRENT_TIME und CURRENT_TIME() sind Synonyme für CURTIME().

CURRENT_TIMESTAMP und CURRENT_TIMESTAMP()

CURRENT_TIMESTAMP und CURRENT_TIMESTAMP() sind Synonyme für NOW().

DATUM(Ausdruck)

Ruft den Datumsteil eines Datums- oder Datum/Uhrzeit-Ausdrucks ab.

DATEDIFF(expr1,expr2)

DATEDIFF() gibt expr1.expr2 zurück, ausgedrückt als Anzahl der Tage zwischen zwei Daten. Sowohl expr1 als auch expr2 sind Datums- oder Datetime-Ausdrücke. In den Berechnungen werden nur die Datumsteile verwendet.

DATE_ADD(Datum,INTERVAL-Ausdruckseinheit), DATE_SUB(Datum,INTERVAL-Ausdruckseinheit)

Diese Funktionen führen arithmetische Operationen an Datumsangaben durch. date wird als DATETIME- oder DATE-Wert dargestellt, der das Startdatum angibt. expr ist ein Ausdruck, der den Intervallwert angibt, der zum ursprünglichen Datum addiert oder davon subtrahiert werden soll. expr ist eine Zeichenfolge; Für negative Intervalle kann es mit „-“ beginnen.

Unit ist ein Schlüsselwort, das die Maßeinheiten für den Ausdruck angibt. Beim Schlüsselwort INTERVAL und bei der Einheitennotation wird die Groß-/Kleinschreibung nicht beachtet. Die folgende Tabelle zeigt die erwartete Form des Arguments expr für jeden Einheitenwert.

Die Werte QUARTER und WEEK sind in MySQL seit Version 5.0.0 verfügbar.

DATE_FORMAT (Datum,Format)

Dieser Befehl formatiert den Datumswert gemäß der angegebenen Formatzeichenfolge. Die folgenden Zeiger können in der Formatzeile verwendet werden. Formatindikatoren müssen ein „%“-Zeichen voranstellen.

%A. Kurzname des Wochentags (Sun..Sat)

%B. Abgekürzter Monatsname (Jan..Dez)

%Mit. Numerische Bezeichnung des Monats (0…12)

%D. Tag des Monats mit englischem Suffix (0, 1, 2, 3,.)

%D. Numerische Bezeichnung des Tages des Monats (00..31)

%e. Numerische Bezeichnung des Tages des Monats (00..31)

%F. Mikrosekunden (000000..999999)

%H. Stunde (00..23)

%H. Stunde (01..12)

%ICH. Stunde (01..12)

%ich. Numerische Bezeichnung der Minuten (00..59)

%J. Tag des Jahres (001..366)

%k. Stunde (0..23)

%l. Stunde (1..12)

%M. Name des Monats (Januar..Dezember)

%M. Numerische Bezeichnung des Monats (00..12)

%R. Vormittags oder nachmittags

%R. Uhrzeit, 12-Stunden-Format (hh:mm:ss gefolgt von AM oder PM)

%S. Sekunden (00..59)

%S. Sekunden (00..59)

%T. Uhrzeit, 24-Stunden-Format (hh:mm:ss)

%U. Woche (00..53), wobei Sonntag der erste Tag der Woche ist

%u. Woche (00..53), wobei Montag der erste Tag der Woche ist

%V. Woche (01..53), wobei Sonntag der erste Tag der Woche ist; Wird mit %X verwendet

%v. Woche (01..53), wobei Montag der erste Tag der Woche ist; Wird mit %x verwendet

%W. Name des Wochentags (Sonntag..Samstag)

%w. Wochentag (0=Sonntag..6=Samstag)

%X. Jahr für eine Woche, deren erster Tag der Woche Sonntag ist, eine vierstellige Zahl; Wird mit %V verwendet

%X. Jahr für eine Woche, deren erster Tag der Woche Montag ist, eine vierstellige Zahl; Wird mit %V verwendet

%Y. Jahr, Datum, vier Ziffern

%y. Numerische Jahresangabe (zweistellig)

%%. Im wahrsten Sinne des Wortes das %-Symbol

%X. x, für alle.x., die oben nicht aufgeführt sind

DATE_SUB(Datum,INTERVAL Ausdruckseinheit)

Ähnlich der Funktion DATE_ADD().

TAG(Datum)

DAY() ist ein Synonym für die Funktion DAYOFMONTH().

TAGNAME(Datum)

Gibt den Wochentag für das angegebene Datum zurück.

DAYOFMONTH(Datum)

Gibt den Tag des Monats für das angegebene Datum im Bereich von 0 bis 31 zurück.

DAYOFWEEK(Datum)

Gibt den Index des Wochentags zurück (1 = Sonntag, 2 = Montag, ., 7 = Samstag). Diese Indexwerte folgen dem ODBC-Standard.

DAYOFYEAR(Datum)

Gibt den Tag des Jahres für das angegebene Datum im Bereich von 1 bis 366 zurück.

EXTRAKT (Einheit AB Datum)

Die Funktion EXTRACT() verwendet die gleichen Arten von Einheitenindikatoren wie DATE_ADD() oder DATE_SUB(), führt jedoch keine arithmetischen Operationen an Datumsangaben durch, sondern extrahiert den Einheitenindikatorteil des Datums.

FROM_DAYS(N)

Der DATE-Wert wird unter Berücksichtigung der Anzahl der Tage N zurückgegeben.

Notiz. Verwenden Sie FROM_DAYS() für alte Daten sorgfältig. Die Funktion ist nicht für die Arbeit mit Datumswerten vor der Einführung des Gregorianischen Kalenders (1582) vorgesehen.

FROM_UNIXTIME(unix_timestamp), FROM_UNIXTIME(unix_timestamp,format)

Gibt eine Darstellung des Arguments unix_timestamp als Wert im Format „JJJJ-MM-TT HH:MM:SS oder JJJJMMTDHHMMSS“ zurück, je nachdem, ob diese Funktion in einem Zeichenfolgen- oder numerischen Kontext verwendet wird. Der Wert wird in der aktuellen Zeitzone ausgedrückt. Der Parameter unix_timestamp ist ein interner Zeitstempelwert, der von der Funktion UNIX_TIMESTAMP() generiert wird.

Wenn Format angegeben ist, wird das Ergebnis gemäß der Formatzeichenfolge formatiert, die auf die gleiche Weise verwendet wird, wie im Abschnitt DATE_FORMAT() beschrieben.

STUNDE(Zeit)

Gibt die Stunden ab dem angegebenen Zeitpunkt zurück. Der Bereich des zurückgegebenen Werts liegt zwischen 0 und 23. Der Bereich der TIME-Werte ist jedoch tatsächlich viel größer, sodass HOUR Werte über 23 zurückgeben kann.

LAST_DAY(Datum)

Nimmt einen Datums- oder Datum/Uhrzeit-Wert und gibt den Wert zurück, der dem letzten Tag des Monats entspricht. Gibt NULL zurück, wenn das Argument ungültig ist.

LOCALTIME und LOCALTIME()

LOCALTIME und LOCALTIME() sind Synonyme für NOW().

LOCALTIMESTAMP und LOCALTIMESTAMP()

LOCALTIMESTAMP und LOCALTIMESTAMP() sind Synonyme für NOW().

MAKEDATE(Jahr,TagdesJahres)

Gibt die Werte für das Datum, das angegebene Jahr und den Tag des Jahres zurück. Der Wert von dayofyear muss größer als 0 sein, sonst ist das Ergebnis NULL.

MAKETIME(Stunde, Minute, Sekunde)

Gibt den aus den Argumenten Stunde, Minute und Sekunde berechneten Zeitwert zurück.

MIKROSEKUNDE(expr)

Gibt Mikrosekunden aus einem Zeitausdruck oder datetime(expr)-Ausdruck als Zahl im Bereich von 0 bis 999999 zurück.

MINUTE(Zeit)

Gibt die Minuten für die angegebene Zeit im Bereich von 0 bis 59 zurück.

Monatsdatum)

Gibt den Monat für das angegebene Datum im Bereich von 0 bis 12 zurück.

MONTHNAME(Datum)

Gibt den vollständigen Monatsnamen für das angegebene Datum zurück.

JETZT()

Gibt das aktuelle Datum und die aktuelle Uhrzeit als Wert im Format „JJJJ-MM-TT HH:MM:SS“ oder JJJJMMTDHHMMSS zurück, je nachdem, ob die Funktion in einem Zeichenfolgen- oder numerischen Kontext verwendet wird. Dieser Wert wird in der aktuellen Zeitzone ausgedrückt.

PERIOD_ADD(P,N)

Fügt der Periode P N Monate hinzu (im Format JJMM oder JJJJMM). Gibt einen Wert im Format JJJJMM zurück. Beachten Sie, dass das Periodenargument P kein Datumswert ist.

PERIOD_DIFF(P1,P2)

Gibt die Anzahl der Monate zwischen den Perioden P1 und P2 zurück. Die Zeiträume P1 und P2 müssen im Format JJMM oder JJJJMM angegeben werden. Beachten Sie, dass die Periodenargumente P1 und P2 keine Datumswerte sind.

QUARTAL(Datum)

Gibt das Quartal des Jahres für das angegebene Datum im Bereich 1 bis 4 zurück.

Zweites Mal)

Gibt den Sekundenwert für eine Zeit im Bereich von 0 bis 59 zurück.

SEC_TO_TIME(Sekunden)

Gibt das Sekundenargument zurück, konvertiert in Stunden, Minuten und Sekunden im Format „HH:MM:SS“ oder HHMMSS, je nachdem, ob die Funktion in einem Zeichenfolgen- oder numerischen Kontext verwendet wird.

STR_TO_DATE(str,format)

Dies ist die Umkehrung der Funktion DATE_FORMAT(). Es akzeptiert die Zeichenfolge str und die Formatzeichenfolge format. Die Funktion STR_TO_DATE() gibt DATETIME zurück, wenn die Formatzeichenfolge sowohl ein Datum als auch eine Uhrzeit enthält. Andernfalls wird DATE oder TIME zurückgegeben, wenn die Zeichenfolge nur ein Datum oder eine Uhrzeit enthält.

SUBDATE(Datum,INTERVAL-Ausdruckseinheit) und SUBDATE(Ausdruck,Tage)

Wenn SUBDATE() mit einem zweiten Argument aufgerufen wird, das als INTERVAL angegeben ist, ist die Funktion ein Synonym für DATE_SUB(). Informationen zum INTERVAL-Argument finden Sie unter DATE_ADD().

SUBTIME(expr1,expr2)

Die Funktion SUBTIME() gibt expr1 zurück. Ausdruck2 wird als Wert im gleichen Format wie Ausdruck1 ausgedrückt. Der Wert von expr1 ist ein Zeit- oder Datum/Uhrzeit-Ausdruck, und der Wert von expr2 ist ein Zeitausdruck.

SYSDATE()

Gibt das aktuelle Datum und die aktuelle Uhrzeit als Wert im Format „JJJJ-MM-TT HH:MM:SS“ oder JJJJMMTDHHMMSS zurück, je nachdem, ob die Funktion in einem Zeichenfolgen- oder numerischen Kontext verwendet wird.

ZEIT(expr)

Extrahiert den Zeitanteil von expr und gibt ihn als String zurück.

TIMEDIFF(expr1,expr2)

TIMEDIFF() gibt expr1 zurück. expr2 wird als Zeitwert ausgedrückt. Die Werte expr1 und expr2 sind entweder Zeit- oder Datum/Uhrzeit-Ausdrücke, aber beide müssen vom gleichen Typ sein.

TIMESTAMP (expr), TIMESTAMP (expr1, expr2)

Wenn ein Argument angegeben ist, gibt diese Funktion einen Datums- oder Datumszeitausdruck expr als Datumszeitwert zurück. Mit zwei Argumenten fügt es den Zeitausdruck expr2 zum Datums- oder Datetime-Ausdruck expr1 hinzu und gibt das Ergebnis als Datetime-Wert zurück.

TIMESTAMPADD(Einheit, Intervall, Datum/Uhrzeit_Ausdruck)

Diese Funktion fügt einem Datums- oder Zeitausdruck datetime_expr einen ganzzahligen Intervallausdruck hinzu. Die Einheiten für das Intervall werden durch das Unit-Argument angegeben, das einen der folgenden Werte annehmen kann:

Der Einheitenwert kann mit einem der oben gezeigten Schlüsselwörter oder mit dem Präfix SQL_TSI_ angegeben werden. Beispielsweise sind DAY und SQL_TSI_DAY gültige Werte.

TIMESTAMPDIFF(unit,datetime_expr1,datetime_expr2)

Gibt die ganzzahlige Differenz zwischen den Datums- oder Datumszeitausdrücken datetime_expr1 und datetime_expr2 zurück. Die Maßeinheiten für das Ergebnis werden durch das Einheitenargument angegeben. Die gültigen Werte für das Unit-Argument sind dieselben wie die in der Funktion TIMESTAMPADD() aufgeführten.

TIME_FORMAT(Zeit,Format)

Diese Funktion wird auf die gleiche Weise wie die Funktion DATE_FORMAT() verwendet, die Formatzeichenfolge kann jedoch nur Formatspezifizierer für Stunden, Minuten und Sekunden enthalten.

Wenn der Zeitwert einen Stundenteil enthält, der größer als 23 ist, geben die Uhrformatindikatoren %H und %k einen Wert an, der über dem normalen Bereich von 0 bis 23 liegt. Andere Uhrformatindikatoren geben einen Wert von Modulo 12 Stunden an.

TIME_TO_SEC(Zeit)

Gibt das in Sekunden konvertierte Zeitargument zurück.

Heutiges Datum)

Gibt die Tageszahl (Anzahl der Tage seit Jahr 0) für das angegebene Datum zurück.

UNIX_TIMESTAMP(), UNIX_TIMESTAMP(Datum)

Wenn diese Funktion ohne Argument aufgerufen wird, gibt sie den Unix-Zeitstempel (Sekunden seit „1970-01-01 00:00:00“ UTC) als positive Ganzzahl zurück. Wenn UNIX_TIMESTAMP() mit einem Datumsargument aufgerufen wird, gibt es den Wert des Arguments zurück, ausgedrückt in Sekunden seit „1970-01-01 00:00:00“ UTC. date kann eine DATE-Zeichenfolge, eine DATETIME-Zeichenfolge, ein TIMESTAMP oder eine Zahl im Format JJMMTT oder JJJJMMTT sein.

UTC_DATE, UTC_DATE()

Gibt das aktuelle UTC-Datum als Wert im Format „JJJJ-MM-TT“ oder JJJJMMTT zurück, je nachdem, ob diese Funktion in einem Zeichenfolgen- oder numerischen Kontext verwendet wird.

UTC_TIME, UTC_TIME()

Gibt die aktuelle UTC-Zeit als Wert im Format „HH:MM:SS“ oder HHMMSS zurück, je nachdem, ob die Funktion in einem String- oder numerischen Kontext verwendet wird.

UTC_TIMESTAMP, UTC_TIMESTAMP()

Gibt das aktuelle UTC-Datum und die aktuelle UTC-Uhrzeit als Wert „JJJJ-MM-TT HH:MM:SS“ oder im Format YYYYMMDDHHMMSS zurück, je nachdem, ob diese Funktion in einem Zeichenfolgen- oder numerischen Kontext verwendet wird.

WOCHE(Datum[,Modus])

Diese Funktion gibt die Wochennummer für das angegebene Datum zurück. Mit der WEEK()-Form mit zwei Argumenten können Sie angeben, ob die Woche am Sonntag oder Montag beginnt und ob der Rückgabewert im Bereich von 0 bis 53 oder 1 bis 53 liegen soll. Wenn das Modusargument weggelassen wird, wird der Wert von Die Systemvariable default_week_format wird verwendet

WOCHENTAG(Datum)

Gibt den Index des Wochentags für das angegebene Datum zurück (0 = Montag, 1 = Dienstag, 6 = Sonntag).

WEEKOFYEAR(Datum)

Gibt die Kalenderwoche für das angegebene Datum als Zahl im Bereich von 1 bis 53 zurück. WEEKOFYEAR() ist eine Kompatibilitätsfunktion, die WEEK(date,3) entspricht.

JAHR(Datum)

Gibt das Jahr für das angegebene Datum zurück, im Bereich von 1000 bis 9999, oder 0 für date.zero.

YEARWEEK(Datum), YEARWEEK(Datum,Modus)

Gibt das Jahr und die Woche für das angegebene Datum zurück. Das Modusargument funktioniert genauso wie das Modusargument der Funktion WEEK(). Das resultierende Jahr kann sich von dem Jahr im Datumsargument für die erste und letzte Woche des Jahres unterscheiden.

Notiz. Die Wochennummer unterscheidet sich von dem, was WEEK() für die optionalen Argumente 0 oder 1 zurückgibt (0), da WEEK() die Woche im Kontext eines bestimmten Jahres zurückgibt.

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 (d. h. negative Werte werden als positiv zurückgegeben) eines numerischen Ausdrucks n zurück.

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 p eine positive Zahl ist, wird der Bruchteil von 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 Tabellenzeilen zurück, die von der letzten vom System ausgeführten Transact-SQL-Anweisung verarbeitet wurden. 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. Die in Transact-SQL unterstützten Datumsfunktionen und ihre kurzen Beschreibungen sind in der folgenden Tabelle aufgeführt:

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 dem angegebenen Datum die n-te Anzahl der im Elementargument angegebenen Einheiten hinzu. (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.

In der folgenden Tabelle sind einige der wichtigsten Systemfunktionen mit ihren Kurzbeschreibungen aufgeführt:

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

Konvertiert den Ausdruck w in den angegebenen 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.

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) nimmt ein Datum und gibt die Vollversion mit Uhrzeit zurück. 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.
Fortsetzung des Themas:
Android

SAYAN-SHUSHENSKAYA HYDROPPLICATION Warum der Damm erstickt ist „Ich habe große Angst, für den Rest meiner Tage Kränze auf dem Jenissei zu tragen“, sagt Nikolai Zholob. - Mein Sohn hat kein Grab und seine Seele kann in Frieden sein...