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 Suchen Sie in SQL nach allen Benutzern, deren Geburtstag nächsten Monat ist 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: 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 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() 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. 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. 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() sind Synonyme für CURDATE() 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() sind Synonyme für CURTIME(). CURRENT_TIMESTAMP und CURRENT_TIMESTAMP() sind Synonyme für NOW(). Ruft den Datumsteil eines Datums- oder Datum/Uhrzeit-Ausdrucks ab. 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. 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. 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 Ähnlich der Funktion DATE_ADD(). DAY() ist ein Synonym für die Funktion DAYOFMONTH(). Gibt den Wochentag für das angegebene Datum zurück. Gibt den Tag des Monats für das angegebene Datum im Bereich von 0 bis 31 zurück. Gibt den Index des Wochentags zurück (1 = Sonntag, 2 = Montag, ., 7 = Samstag). Diese Indexwerte folgen dem ODBC-Standard. Gibt den Tag des Jahres für das angegebene Datum im Bereich von 1 bis 366 zurück. 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. 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. 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. 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. 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() sind Synonyme für NOW(). LOCALTIMESTAMP und LOCALTIMESTAMP() sind Synonyme für NOW(). 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. Gibt den aus den Argumenten Stunde, Minute und Sekunde berechneten Zeitwert zurück. Gibt Mikrosekunden aus einem Zeitausdruck oder datetime(expr)-Ausdruck als Zahl im Bereich von 0 bis 999999 zurück. Gibt die Minuten für die angegebene Zeit im Bereich von 0 bis 59 zurück. Gibt den Monat für das angegebene Datum im Bereich von 0 bis 12 zurück. Gibt den vollständigen Monatsnamen für das angegebene Datum zurück. 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. 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. 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. Gibt das Quartal des Jahres für das angegebene Datum im Bereich 1 bis 4 zurück. Gibt den Sekundenwert für eine Zeit im Bereich von 0 bis 59 zurück. 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. 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. 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(). 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. 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. Extrahiert den Zeitanteil von expr und gibt ihn als String zurück. 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. 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. 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. 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. 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. Gibt das in Sekunden konvertierte Zeitargument zurück. Gibt die Tageszahl (Anzahl der Tage seit Jahr 0) für das angegebene Datum zurück. 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. 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. 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. 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. 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 Gibt den Index des Wochentags für das angegebene Datum zurück (0 = Montag, 1 = Dienstag, 6 = Sonntag). 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. Gibt das Jahr für das angegebene Datum zurück, im Bereich von 1000 bis 9999, oder 0 für date.zero. 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 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: Berechnet den arithmetischen Durchschnitt der in einer Spalte enthaltenen Daten. Die Werte, für die die Berechnung durchgeführt wird, müssen numerisch sein. Bestimmt den Maximal- und Minimalwert aller in einer Spalte enthaltenen Datenwerte. Werte können numerisch, als Zeichenfolge oder zeitlich (Datum/Uhrzeit) sein. Berechnet die Gesamtsumme der Werte in einer Spalte. Die Werte, für die die Berechnung durchgeführt wird, müssen numerisch sein. 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). Ä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. 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 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: 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 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. Trigonometrische Funktionen, die Kosinus, Sinus, Tangens und Kotangens des Wertes n berechnen. Das Ergebnis hat den Datentyp FLOAT. 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 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 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 Rundet auf den niedrigsten ganzzahligen Wert ab. SELECT FLOOR(5.88) – Gibt 5 zurück Berechnet den Wert von e 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. Gibt den Wert von π (3,1415) zurück. Berechnet den Wert von x y . Gibt eine beliebige Zahl vom Typ FLOAT im Wertebereich zwischen 0 und 1 zurück. 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. Gibt das Vorzeichen von n als Zahl zurück: +1, wenn positiv, -1, wenn negativ. SQRT(n) – berechnet die Quadratwurzel der Zahl n, SQUARE(n) – gibt das Quadrat des Arguments n zurück. 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: Gibt das aktuelle Systemdatum und die aktuelle Systemzeit zurück. SELECT GETDATE() 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“) 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“) 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“) 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 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: Konvertiert das angegebene Zeichen in die entsprechende ASCII-Code-Ganzzahl. SELECT ASCII("W") -- 87 SELECT UNICODE("u") -- 1102 Konvertiert einen ASCII-Code (oder Unicode, wenn NCHAR) in das entsprechende Zeichen. SELECT CHAR(87) – „W“ SELECT NCHAR(1102) – „yu“ 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. 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 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) Gibt die Anzahl der Zeichen (nicht die Anzahl der Bytes) der im Argument angegebenen Zeichenfolge str zurück, einschließlich nachfolgender Leerzeichen. 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) Die LTRIM-Funktion entfernt führende Leerzeichen in der Zeichenfolge str, RTRIM entfernt jeweils Leerzeichen am Ende der Zeichenfolge. 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) 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") Ersetzt alle Vorkommen der Teilzeichenfolge str2 in der Zeichenfolge str1 durch die Teilzeichenfolge str3. Gibt „Desynchronization“ zurück. SELECT REPLACE(„Synchronization“, „Synchronization“, „Desynchronization“) Wiederholt die Zeichenfolge str i-mal. Gibt „aBaBaBaBaB“ zurück. SELECT REPLICATE(“aB“, 5) Gibt die Zeichenfolge str in umgekehrter Reihenfolge aus. Gibt „yaitsazinorkhniS“ zurück. SELECT REVERSE(„Synchronisation“) Gibt einen vierstelligen Soundex-Code zurück, der verwendet wird, um zu bestimmen, ob zwei Zeichenfolgen ähnlich sind. Funktioniert nur für ASCII-Zeichen. Gibt eine Zeichenfolge aus Leerzeichen mit der im Längenparameter angegebenen Länge zurück. Ähnlich wie REPLICATE(" ", Länge). 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) 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") Extrahiert aus dem String str, beginnend an Position a, einen Teilstring der Länge length. 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: 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. Gibt den ersten Ausdruckswert aus der Liste der Ausdrücke a1, a2, ... zurück, der nicht null ist. Gibt die Länge der Spalte col des Datenbankobjekts (Tabelle oder Ansicht) obj zurück. Gibt 4 zurück SELECT COL_LENGTH("Employee", "Id") Entspricht der CAST-Funktion, die Argumente werden jedoch anders angegeben. Kann mit jedem Datentyp verwendet werden. Gibt das aktuelle Datum und die aktuelle Uhrzeit zurück. Gibt den Namen des aktuellen Benutzers zurück. 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 Gibt 1 zurück, wenn die Verwendung von Nullwerten in der Datenbank dbname dem ANSI SQL-Standard entspricht. Gibt den Wert von expr zurück, wenn dieser nicht NULL ist; andernfalls wird der Wert zurückgegeben. Bestimmt, ob der Ausdruck expr ein gültiger numerischer Typ ist. Erstellt eine eindeutige Identifikationsnummer-ID, die aus einer 16-Byte-Binärzeichenfolge besteht, die zum Speichern von Werten des Datentyps UNIQUEIDENTIFIER dient. 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.) 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 Gibt Informationen über die Eigenschaften des Datenbankservers zurück. Gibt die ID des aktuellen Benutzers zurück. Gibt die Benutzer-ID Benutzername zurück. Wenn kein Benutzer angegeben ist, wird die aktuelle Benutzer-ID zurückgegeben. Gibt den Benutzernamen mit der angegebenen ID zurück. Wenn kein Bezeichner angegeben ist, wird der Name des aktuellen Benutzers zurückgegeben. 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: 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) 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") 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“) Gibt die Datenbank-ID db_name zurück. Wenn kein Datenbankname angegeben ist, wird die ID der aktuellen Datenbank zurückgegeben. Gibt den Namen der Datenbank zurück, die db_id hat. Wenn kein Bezeichner angegeben ist, wird der Name der aktuellen Datenbank zurückgegeben. 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. 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. Gibt den Namen des Datenbankobjekts zurück, das den Bezeichner obj_id hat. SELECT OBJECT_NAME(245575913); Gibt den Objektbezeichner obj_name der Datenbank zurück. Gibt 245575913 zurück – Mitarbeitertabellen-ID SELECT OBJECT_ID("Employee") Gibt Informationen zu Objekten aus der aktuellen Datenbank zurück. SELECT CURDATE(), CURTIME(), NOW(); INSERT INTO incoming (id_vendor, date_incoming) VALUES ("2", curdate()); SELECT id_vendor, date_incoming FROM incoming; SELECT ADDDATE("2011-04-15 00:02:00", INTERVAL "02:45" HOUR_MINUTE); SELECT SUBDATE("2011-04-15 00:02:00", INTERVAL "23:53" HOUR_MINUTE); SELECT PERIOD_ADD(201102, 2); FRAC_SECOND – Mikrosekunden SELECT TIMESTAMPADD(DAY, 2, „2011-04-02“); SELECT TIMEDIFF("2011-04-17 23:50:00", "2011_04-16 14:50:00"); SELECT PERIOD_DIFF(201108, 201001); FRAC_SECOND – Mikrosekunden 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; SELECT SUBTIME("2011-04-18 23:17:00", "02:15:30"); DATUM AUSWÄHLEN("2011-04-15 00:03:20"); SELECT TIME("2011-04-15 00:03:20"); SELECT TIMESTAMP("2011-04-17"); SELECT DAY("2011-04-17"), DAYOFMONTH("2011-04-17"); SELECT DAYNAME("17.04.2011"), DAYOFWEEK("17.04.2011"), WEEKDAY("17.04.2011"); SELECT WEEK("2011-04-17"), WEEKOFYEAR("2011-04-17 23:40:00"); SELECT MONTH("2011-04-17"), MONTHNAME("2011-04-17"); SELECT QUARTER("2011-04-17"); SELECT YEAR("2011-04-17"); SELECT DAYOFYEAR("2011-04-17"); SELECT HOUR("2011-04-17 18:20:03"); SELECT TIME_TO_SEC("22:10:30"), SEC_TO_TIME(45368); SELECT MAKEDATE(2011, 120);
SELECT Name, Geburt, CURRENT_DATE, (YEAR(CURRENT_DATE)-YEAR(birth)) - (RIGHT(CURRENT_DATE,5)
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;
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.ADDDATE(Datum,INTERVAL-Ausdruckseinheit), ADDDATE(Ausdruck,Tage)
ADDTIME(expr1,expr2)
CONVERT_TZ(dt,from_tz,to_tz)
CURDATE()
CURRENT_DATE und CURRENT_DATE()
CURTIME()
CURRENT_TIME und CURRENT_TIME()
CURRENT_TIMESTAMP und CURRENT_TIMESTAMP()
DATUM(Ausdruck)
DATEDIFF(expr1,expr2)
DATE_ADD(Datum,INTERVAL-Ausdruckseinheit), DATE_SUB(Datum,INTERVAL-Ausdruckseinheit)
DATE_FORMAT (Datum,Format)
DATE_SUB(Datum,INTERVAL Ausdruckseinheit)
TAG(Datum)
TAGNAME(Datum)
DAYOFMONTH(Datum)
DAYOFWEEK(Datum)
DAYOFYEAR(Datum)
EXTRAKT (Einheit AB Datum)
FROM_DAYS(N)
FROM_UNIXTIME(unix_timestamp), FROM_UNIXTIME(unix_timestamp,format)
STUNDE(Zeit)
LAST_DAY(Datum)
LOCALTIME und LOCALTIME()
LOCALTIMESTAMP und LOCALTIMESTAMP()
MAKEDATE(Jahr,TagdesJahres)
MAKETIME(Stunde, Minute, Sekunde)
MIKROSEKUNDE(expr)
MINUTE(Zeit)
Monatsdatum)
MONTHNAME(Datum)
JETZT()
PERIOD_ADD(P,N)
PERIOD_DIFF(P1,P2)
QUARTAL(Datum)
Zweites Mal)
SEC_TO_TIME(Sekunden)
STR_TO_DATE(str,format)
SUBDATE(Datum,INTERVAL-Ausdruckseinheit) und SUBDATE(Ausdruck,Tage)
SUBTIME(expr1,expr2)
SYSDATE()
ZEIT(expr)
TIMEDIFF(expr1,expr2)
TIMESTAMP (expr), TIMESTAMP (expr1, expr2)
TIMESTAMPADD(Einheit, Intervall, Datum/Uhrzeit_Ausdruck)
TIMESTAMPDIFF(unit,datetime_expr1,datetime_expr2)
TIME_FORMAT(Zeit,Format)
TIME_TO_SEC(Zeit)
Heutiges Datum)
UNIX_TIMESTAMP(), UNIX_TIMESTAMP(Datum)
UTC_DATE, UTC_DATE()
UTC_TIME, UTC_TIME()
UTC_TIMESTAMP, UTC_TIMESTAMP()
WOCHE(Datum[,Modus])
WOCHENTAG(Datum)
WEEKOFYEAR(Datum)
JAHR(Datum)
YEARWEEK(Datum), YEARWEEK(Datum,Modus)
Aggregatfunktionen
Skalarfunktionen
Numerische Funktionen
Numerische Transact-SQL-Funktionen
Funktion
Syntax
Beschreibung
Anwendungsbeispiel
Abs
ABS(n)
ACOS, ASIN, ATAN, ATN2
ACOS(n), ASIN(n), ATAN(n), ATN2(n, m)
COS, SIN, TAN, COT
COS(n), SIN(n), TAN(n), COT(n)
GRAD, RADIANT
GRAD(n), RADIANT(n)
DECKE
DECKE(n)
RUNDEN
RUND(n, p, [t])
BODEN
ETAGE(n)
EXP
EXP(n)
LOG, LOG10
LOG(n), LOG10(n)
PI.
PI()
LEISTUNG
POWER(x, y)
RAND
RAND()
ROWCOUNT_BIG
ROWCOUNT_BIG()
ZEICHEN
ZEICHEN(n)
QUADRATISCH, QUADRATISCH
SQRT(n), SQUARE(n)
Datumsfunktionen
Transact-SQL-Datumsfunktionen
Funktion
Syntax
Beschreibung
Anwendungsbeispiel
VERABREDUNG BEKOMMEN
VERABREDUNG BEKOMMEN()
DATEPART
DATEPART (Element, Datum)
DATUMNAME
DATENAME (Element, Datum)
DATEDIFF
DATEDIFF (Element, dat1, dat2)
DATUM HINZUFÜGEN
DATEADD (Artikel, n, Datum)
String-Funktionen
Transact-SQL-String-Funktionen
Funktion
Syntax
Beschreibung
Anwendungsbeispiel
ASCII, UNICODE
ASCII(char), UNICODE(char)
CHAR, NCHAR
CHAR(int), NCHAR(int)
CHARINDEX
CHARINDEX (str1, str2)
UNTERSCHIED
UNTERSCHIED (str1, str2)
LINKS RECHTS
LINKS (str, Länge), RECHTS (str, Länge)
LEN
LEN(str)
UNTEN, OBEN
LOWER(str), UPPER(str)
LTRIM, RTRIM
LTRIM(str), RTRIM(str)
ZITATNAME
QUOTENNAME(char_string)
PATINDEX
PATINDEX (%p%, expr)
ERSETZEN
ERSETZEN (str1, str2, str3)
REPLIZIEREN
REPLICATE (str, i)
UMKEHREN
RÜCKWÄRTS (str)
SOUNDEX
SOUNDEX (str)
RAUM
SPACE (Länge)
STR
STR (f[, len[, d]])
SACHEN
STUFF (str1, a, Länge, str2)
SUBSTRING
SUBSTRING (str1, a, Länge)
Systemfunktionen
Transact-SQL-Systemfunktionen
Funktion
Syntax
Beschreibung
Anwendungsbeispiel
GIESSEN
CAST (w AS-Typ [(Länge)]
VERSCHMELZEN
KOALESZIEREN (a1, a2)
COL_LENGTH
COL_LENGTH (obj, col)
KONVERTIEREN
CONVERT (Typ[(Länge)], w)
AKTUELLER ZEITSTEMPEL
AKTUELLER ZEITSTEMPEL
AKTUELLER_BENUTZER
AKTUELLER_BENUTZER
DATENLÄNGE
DATENLÄNGE(z)
GETANSINUL
GETANSINULL("Datenbankname")
IST NULL
ISNULL (Ausdruck, Wert)
ISNUMERISCH
ISNUMERIC (expr)
NEUID
NEWID()
NEWSEQUENTIALID
NEWSEQUENTIALID()
NULLWENN
NULLIF (Ausdruck1, Ausdruck2)
SERVERPROPERTY
SERVERPROPERTY (Eigenschaftsname)
SYSTEM_USER
SYSTEM_USER
BENUTZER-ID
BENUTZER-ID()
NUTZERNAME
NUTZERNAME()
Metadatenfunktionen
Transact-SQL-Metadatenfunktionen
Funktion
Syntax
Beschreibung
Anwendungsbeispiel
COL_NAME
COL_NAME (tab_id, col_id)
COLUMNPROPERTY
COLUMNPROPERTY (ID, Spalte, Eigenschaft)
DATABASEPROPERTY
DATABASEPROPERTY (Datenbank, Eigenschaft)
DB_ID
DB_ID()
DB_NAME
DB_NAME()
INDEX_COL
INDEX_COL (Tabelle, i, nein)
INDEXPROPERTY
INDEXPROPERTY (obj_id, index_name, Eigenschaft)
OBJEKTNAME
OBJECT_NAME (obj_id)
OBJEKT IDENTIFIKATION
OBJECT_ID (obj_name)
OBJEKTEIGENSCHAFT
OBJECTPROPERTY (obj_id, Eigenschaft)
SQL – Lektion 13. Datums- und Uhrzeitfunktionen
Diese Funktionen sind für die Arbeit mit Kalenderdatentypen konzipiert. Schauen wir uns die am besten anwendbaren an.
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.
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:
Wenn wir das Lieferdatum als Daten-Zeit-Typ speichern würden, wäre die Funktion NOW() für uns besser geeignet.
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:
ZWEITE - Sekunden
MINUTE - Minuten
STUNDE - Stunden
TAG – Tage
WOCHE - Wochen
MONAT - Monate
VIERTEL - Blöcke
JAHR – Jahre
ZWEITE - Sekunden
MINUTE - Minuten
STUNDE - Stunden
TAG – Tage
WOCHE - Wochen
MONAT - Monate
VIERTEL - Blöcke
JAHR – Jahre