Funktionen

DATE

DATE(<expression-1> [ , <expression-2> ] )

Die Funktion DATE wandelt einen Varchar- oder Bigint-Ausdruck in ein Datum um.

Ohne den 2. Parameter werden ISO-Daten erkannt: yyyy, yyyy-MM oder yyyy-MM-dd (Monat und Tag zweistellig). Fehlt der Monat, gilt Januar; fehlt der Tag, gilt der 1. Ein ISO-Zeitstempel wird ebenfalls akzeptiert; verwendet wird nur der Datumsanteil.

Ist der 1. Ausdruck ein Bigint (ohne 2. Parameter), wird er als Anzahl ganzer Tage seit der Unix-Epoche 1970-01-01 interpretiert. 0 ist der 1. Januar 1970, positive Werte liegen danach, negative davor. Ein Format als 2. Parameter ist bei Bigint nicht zulässig.

Mit zwei Parametern gibt der 2. Varchar-Ausdruck das Format an (siehe DateTimeFormatter). Ein möglicher Zeitanteil wird ignoriert, es zählt nur der Datumsanteil.

Optionale Formatteile stehen in eckigen Klammern, z. B. 'yyyy-MM-dd[ HH[:mm]]'. Ein Leerzeichen direkt vor [ wird in den optionalen Block gezogen: 'yyyy-MM-dd [HH:mm]' gilt wie 'yyyy-MM-dd[ HH:mm]' und erkennt ein Datum mit oder ohne Uhrzeit. Ohne diese Verschiebung wäre das Leerzeichen Pflicht.

Fehlen Monat oder Tag, werden nur die vorhandenen Teile verwendet (fehlender Monat/Tag = 1).

Ist der Wert oder das Format NULL oder der Wert leer, ist das Ergebnis NULL.

Das Ergebnis hat den Datentyp DATE.

Folgende Formatanweisungen sollten verwendet werden:

Buchstabe Bedeutung Beispiel Ergebnis
y / u Jahr yyyy; yy 2011; 11
M Monat MM; M; M[M] 01; 1; 1 oder 01
d Tag dd; d; d[d] 04; 4; 4 oder 04
[ ] optionaler Abschnitt yyyy-MM-dd[ HH:mm] Datum mit oder ohne Uhrzeit

Für ein- oder zweistellige Monat- und Tageszahlen M[M] und d[d] verwenden:

SELECT DATE('2026-9-1', 'yyyy-M[M]-d[d]')
     , DATE('2026-09-01', 'yyyy-M[M]-d[d]');

Ausgabe

column_1 column_2
2026-09-01 2026-09-01

Ein Beispiel könnte so aussehen. Hat die Spalte d (Typ Zeichenkette) den Wert '2011-11-1', so liefert

SELECT DATE(d, 'yyyy-M-d')
2011-11-01

Für Excel-Datumsangaben ist die DATE Funktion im Excel-Treiber überschrieben, siehe auch hier.

Beispiel

Ohne Format: Jahr, Jahr-Monat oder volles Datum.

SELECT DATE('2026')
     , DATE('2026-02')
     , DATE('2026-02-18');

Ausgabe

column_1 column_2 column_3
2026-01-01 2026-02-01 2026-02-18
SELECT DATE('2024-03-27')
     , DATE('27.5.2024', 'dd.MM.yyyy')
     , DATE('20211224', 'yyyyMMdd')
     , DATE('24.12.2021 18:30:10', 'dd.MM.yyyy[ HH:mm:ss]')
     , DATE('2024-03', 'yyyy-MM');

Ausgabe

column_1 column_2 column_3 column_4 column_5
2024-03-27 2024-05-27 2021-12-24 2021-12-24 2024-03-01

Optionale Formatteile und fehlende Felder im Wert:

SELECT DATE('2024-03-27', 'yyyy-MM-dd [HH:mm]')
     , DATE('2024-03-27 14:30', 'yyyy-MM-dd [HH:mm]')
     , DATE('2024', 'yyyy');

Ausgabe

column_1 column_2 column_3
2024-03-27 2024-03-27 2024-01-01

Unix-Epoche: der Bigint-Wert ist die Anzahl Tage seit 1970-01-01.

SELECT DATE(0)
     , DATE(1)
     , DATE(-1);

Ausgabe

column_1 column_2 column_3
1970-01-01 1970-01-02 1969-12-31

TIMESTAMP

TIMESTAMP(<expression-1> [ , <expression-2> ] )

Die Funktion TIMESTAMP wandelt einen Varchar- oder Bigint-Ausdruck in einen Zeitstempel (Datum und Uhrzeit) um.

Die Zeitzone im Wert ist optional. Ohne Zone gilt die lokale Uhrzeit; mit Z (Offset oder Zonenname) wird in die lokale Zeit umgerechnet.

Ist der 1. Ausdruck ein Bigint (ohne 2. Parameter), wird er als Anzahl Sekunden seit der Unix-Epoche 1970-01-01 00:00:00 UTC interpretiert und in die lokale Zeitzone umgerechnet. Ein Format als 2. Parameter ist bei Bigint nicht zulässig.

Ist der Wert oder das Format NULL oder der Wert leer, ist das Ergebnis NULL.

Ohne den zweiten Parameter werden gängige ISO-ähnliche Formate erkannt, z. B.:

  • 2026, 2026-02, 2026-02-18 (fehlender Monat = Januar, fehlender Tag = 1, Uhrzeit Mitternacht)
  • 2024-03-27 14:30:00
  • 2024-03-27T14:30:00
  • optional Bruchsekunden
  • optional Z, Offset (+02:00) oder Zonenname (GMT)

Ohne Zone bleibt die Uhrzeit unverändert, Z ist UTC:

SELECT TIMESTAMP('2026-09-01 00:00')
     , TIMESTAMP('2026-09-01 00:00Z');

In der Zeitzone Europe/Berlin (September = MESZ, UTC+2) ergibt das:

column_1 column_2
2026-09-01 00:00:00.0 2026-09-01 02:00:00.0

Mit zwei Parametern gibt der 2. Varchar-Ausdruck das Format an (siehe DateTimeFormatter). Optionale Teile stehen in [], z. B. 'yyyy-MM-dd[ HH:mm[:ss]][X]' oder 'yyyy-M-d HH:mm:ss[ z]'. Damit ist die Zone im Wert optional: '2026-09-01 00:00' und '2026-09-01 00:00Z' passen zum selben Muster. Fehlen Uhrzeitfelder, wird Mitternacht bzw. 0 für Minute/Sekunde eingesetzt.

Häufige Zeit- und Zonenbuchstaben:

Buchstabe Bedeutung Beispiel
H Stunde 0–23 HH; H
m Minute mm; m
s Sekunde ss; s
z Zonenname GMT; CET
X / XXX Offset Z; +02:00

Das Ergebnis hat den Datentyp TIMESTAMP.

Beispiel

Ohne zweiten Parameter (ISO-ähnlich) und mit festem Muster:

SELECT TIMESTAMP('2024-03-27 14:30:00')
     , TIMESTAMP('2024-03-27T15:45:30')
     , TIMESTAMP('2024-03-27')
     , TIMESTAMP('27.03.2024 16:00', 'dd.MM.yyyy HH:mm');

Ausgabe

column_1 column_2 column_3 column_4
2024-03-27 14:30:00.0 2024-03-27 15:45:30.0 2024-03-27 00:00:00.0 2024-03-27 16:00:00.0

Optionale Formatteile: dasselbe Muster erkennt Datum allein, mit Stunde/Minute oder mit Sekunden.

SELECT TIMESTAMP('2024-03-27', 'yyyy-MM-dd[ HH:mm[:ss]]')
     , TIMESTAMP('2024-03-27 14:30', 'yyyy-MM-dd[ HH:mm[:ss]]')
     , TIMESTAMP('2024-03-27 14:30:45', 'yyyy-MM-dd[ HH:mm[:ss]]');

Ausgabe

column_1 column_2 column_3
2024-03-27 00:00:00.0 2024-03-27 14:30:00.0 2024-03-27 14:30:45.0

Fehlende Felder im Wert: es werden nur die vorhandenen Teile verwendet (Tag = 1, Minute/Sekunde = 0).

SELECT TIMESTAMP('2024-03', 'yyyy-MM')
     , TIMESTAMP('2024-03-27 14', 'yyyy-MM-dd HH');

Ausgabe

column_1 column_2
2024-03-01 00:00:00.0 2024-03-27 14:00:00.0

Optionale Zeitzone im Muster: ist eine Zone oder ein Offset angegeben, wird sie verwendet und in die lokale Zeit umgerechnet. Fehlt sie, bleibt die lokale Uhrzeit unverändert.

SELECT TIMESTAMP('2026-10-01 15:30:00', 'yyyy-M-d HH:mm:ss[ z]')
     , TIMESTAMP('2026-10-01 15:30:00 GMT', 'yyyy-M-d HH:mm:ss[ z]')
     , TIMESTAMP('2024-03-27T15:45:30Z')
     , TIMESTAMP('2024-03-27T15:45:30+02:00');

In der Zeitzone Europe/Berlin (Oktober = MESZ, UTC+2; März = MEZ, UTC+1) ergibt das:

column_1 column_2 column_3 column_4
2026-10-01 15:30:00.0 2026-10-01 17:30:00.0 2024-03-27 16:45:30.0 2024-03-27 14:45:30.0

15:30 GMT und 15:30+00:00 sind derselbe Zeitpunkt:

SELECT TIMESTAMP('2026-10-01 15:30:00 GMT', 'yyyy-M-d HH:mm:ss[ z]')
     = TIMESTAMP('2026-10-01 15:30:00+00:00', 'yyyy-M-d HH:mm:ss[XXX]');

Ausgabe: true

Unix-Epoche: der Bigint-Wert ist die Anzahl Sekunden seit 1970-01-01 00:00:00 UTC.

SELECT TIMESTAMP(0) = TIMESTAMP('1970-01-01T00:00:00Z')
     , TIMESTAMP(1) = TIMESTAMP('1970-01-01T00:00:01Z');

Ausgabe: true, true

LTRIM

LTRIM(<expression-1> [ , <expression-2> ] )

Löschen von führenden Zeichen im 1. Varchar-Ausdruck.

Der 2. Varchar-Ausdruck ist optional und gibt einen Satz von Zeichen an, die gelöscht werden sollen. Wenn nicht angegeben, dann wird der Satz auf Leerzeichen beschränkt.

Löscht am Anfang des ersten Ausdrucks alle Zeichen, die in diesem Satz sind, bis zum ersten Zeichen außerhalb des Satzes.

Das Ergebnis hat den Datentyp VARCHAR.

Beispiel

SELECT LTRIM('   das bleibt'), LTRIM('!"$% &%$das bleibt', ' !"$%&');

Ausgabe

column_1 column_2
-------- --------
das bleibt das bleibt

RTRIM

RTRIM(<expression-1> [ , <expression-2> ] )

Löschen von endenden Zeichen im 1. Varchar-Ausdruck.

Der 2. Varchar-Ausdruck ist optional und gibt einen Satz von Zeichen an, die gelöscht werden sollen. Wenn nicht angegeben, dann wird der Satz auf Leerzeichen beschränkt.

Löscht am Ende des ersten Ausdrucks alle Zeichen, die in diesem Satz sind, bis zum ersten Zeichen außerhalb des Satzes.

Das Ergebnis hat den Datentyp VARCHAR.

Beispiel

SELECT RTRIM('das bleibt    '), RTRIM('das bleibt!"$% &%$', ' !"$%&');

Ausgabe

column_1 column_2
-------- --------
das bleibt das bleibt

TRIM

TRIM(<expression>)

Löschen von führenden und endenden "Whitespaces" Zeichen im Varchar-Ausdruck.

Die Funtion verwendet die java Funktion trim (siehe Java 8 trim).

Dabei werden alle zeichen im Ascii Code kleiner oder gleich Leerzeichen als Whitespace angesehen.

Das Ergebnis hat den Datentyp VARCHAR.

Beispiel

SELECT TRIM('  das bleibt    '), TRIM(CHR(9) || ' das bleibt  ' || CHR(13) || CHR(10));

Ausgabe

column_1 column_2
-------- --------
das bleibt das bleibt

LOWER

LOWER(<expression>)

Alle Zeichen im Varchar-Ausdruck in Kleinbuchstaben umwandeln.

Das Ergebnis hat den Datentyp VARCHAR.

Beispiel

SELECT LOWER('Aa123'), lower('GeMiScHt');

Ausgabe

column_1 column_2
-------- --------
aa123 gemischt

UPPER

UPPER(<expression>)

Alle Zeichen im Varchar-Ausdruck in Großbuchstaben umwandeln.

Das Ergebnis hat den Datentyp VARCHAR.

Beispiel

SELECT Upper('Aa123'), UPPER('GeMiScHt');

Ausgabe

column_1 column_2
-------- --------
AA123 GEMISCHT

BIGINT

BIGINT(<expression>)

Umwandeln des Varchar-Ausdruck in einen numerischen, ganzzahlingen Wert.

Verwendet java Long.valueOf() und wirf einen Laufzeitfehler, wenn der String nicht dem Nummernformat entspricht.

Das Ergebnis hat den Datentyp BIGINT.

Beispiel

SELECT 1*'123';

Ausgabe

Implicit Conversion not yet implemented
SELECT 1*BIGINT('123');

Ausgabe

column_1
--------
123
SELECT 1*BIGINT('A123');

Ausgabe

java.lang.NumberFormatException: For input string: "A123"

DOUBLE

DOUBLE(<expression>)

Umwandeln des Varchar-Ausdruck in einen numerischen Dezimalwert.

Verwendet java Double.valueOf() und wirf einen Laufzeitfehler, wenn der String nicht dem Nummernformat entspricht.

Das Ergebnis hat den Datentyp DOUBLE.

Beispiel

SELECT 9*'3.14159';

Ausgabe

Implicit Conversion not yet implemented
SELECT 9*'DOUBLE(3.14159)';

Ausgabe

column_1
--------
28.27431
SELECT 1*DOUBLE('A123');

Ausgabe

java.lang.NumberFormatException: For input string: "A123"

ASCII

ASCII(<expression>)

Das erste Zeichen im Varchar-Ausdruck in den ASCII-Wert umwandeln.

Das Ergebnis hat den Datentyp BIGINT.

Beispiel

SELECT ASCII('A'), ascii('ABC');

Ausgabe

column_1 column_2
-------- --------
65 65

LENGTH

LENGTH(<expression>)

Die Länge einses Varchar-Ausdrucks ermitteln.

Das Ergebnis hat den Datentyp BIGINT.

Beispiel

SELECT LENGTH('A'), lengTH('ABC');

Ausgabe

column_1 column_2
-------- --------
1 3

CHR

CHR(<expression>)

Umwandeln des numerischen Ausdrucks in das dazugehörige ASCII-Zeichen

Das Ergebnis hat den Datentyp VARCHAR.

Beispiel

SELECT CHR(65), chr(35);

Ausgabe

column_1 column_2
-------- --------
A #

LPAD

LPAD(<expression-1>, <expression-2> [ , <expression-3> ])

Den 1. Varchar-Ausdruck links mit dem 3. Varchar-Ausdruck auffüllen, bis die Länge des 2. Bigint-Ausdruck erreicht ist.

Der 3. Varchar-Ausdruck ist optional. Wird er nicht angegeben, so wird mit Leerzeichen aufgefüllt.

Das Ergebnis hat den Datentyp VARCHAR.

Beispiel

SELECT LPAD('x', 10), LPAD('x', 10, '1'), LPAD('xy', 10, 'abc'), lPad('xxxxxxxxxx', 10, '1');

Ausgabe

column_1 column_2 column_3 column_4
-------- -------- -------- --------
         x 111111111x abcabcabxy xxxxxxxxxx

Im 3. Beispiel wird erst der 3. Ausdruck so oft eingefügt, wie er komplett reinpasst. Danach werden rechts die Zeichen abgeschnitten, die nicht mehr als Ergänzung reinpassen

RPAD

RPAD(<expression-1>, <expression-2> [ , <expression-3> ])

Den 1. Varchar-Ausdruck rechts mit dem 3. Varchar-Ausdruck auffüllen, bis die Länge des 2. Bigint-Ausdruck erreicht ist.

Der 3. Varchar-Ausdruck ist optional. Wird er nicht angegeben, so wird mit Leerzeichen aufgefüllt.

Das Ergebnis hat den Datentyp VARCHAR.

Beispiel

SELECT RPAD('x', 10), RPAD('x', 10, '1'), RPAD('xy', 10, 'abc'), rPad('xxxxxxxxxx', 10, '1');

Ausgabe

column_1 column_2 column_3 column_4
-------- -------- -------- --------
x          x111111111 xyabcabcab xxxxxxxxxx

Im 3. Beispiel wird erst der 3. Ausdruck so oft eingefügt, wie er komplett reinpasst. Danach werden rechts die Zeichen abgeschnitten, die nicht mehr als Ergänzung reinpassen

SUBSTR

SUBSTR(<expression-1>, <expression-2> [ , <expression-3> ])

Ausgabe von Teilen des 1. Varchar-Ausdrucks.

Der 2. Bigint-Ausdruck gibt die Startposition (beginnend mit 1) und der optionale 3. Bigint-Ausdruck die Länge. Der 3. Bigint-Ausdruck ist optional. Wird er nicht angegeben, dann wird der Rest ab der Startposition genommen. Ist er länger als die verbleibende Länge , dann wird auch der Rest ab der Startposition zurückgegeben.

Das Ergebnis hat den Datentyp VARCHAR.

Beispiel

SELECT SUBSTR('12345678', 4), substr('12345678', 2, 4), SUBSTR('12345678', 8, 4);

Ausgabe

column_1 column_2 column_3
-------- -------- --------
45678    2345     8
SELECT SUBSTR('12345678', 9);

Ausgabe

[position=1:27] Index out of bounds

INSTR

INSTR(<expression-1>, <expression-2> [ , <expression-3> [ , <expression-4> ] ])

Sucht im 1. Varchar-Ausdrucks den 2. Varchar-Ausdruck.

Wenn der 3. Bigint-Ausdruck angegeben wurde, dann beginnt die Suche ab der entsprechenden Position. Der zusätzliche 4. Bigint-Ausdruck gibt an, das wievielte Auftreten vom 2. Varchar Ausdruck gesucht werden soll.

Ist die Suche nicht erfolgreich, dann wird der Wert 0 zurückgegeben.

Das Ergebnis hat den Datentyp Bigint.

Beispiel

SELECT instr('12341234', '1'), INSTR('12341234', '21'), INSTR('12341234', '1', 6), INSTR('12341234', '1', 1, 2);

Ausgabe

column_1 column_2 column_3 column_4
-------- -------- -------- --------
1        0        0        5

REPLACE

REPLACE(<expression-1>, <expression-2>, <expression-3>)

Im 1. Varchar-Ausdruck Austauschen alle Auftreten vom 2. Varchar-Ausdruck durch den 3. Varchar-Ausdruck.

Die Funtion verwendet die java Funktion replace (siehe Java 8 replace).

Das Ergebnis hat den Datentyp VARCHAR.

Beispiel

SELECT REPLACE('AAAdas bleibtAAAAA', 'A', 'B'), REPLACE('AAAdas bleibtAAAAA', 'B', ''), REPLACE('AAA', 'A', '');

Ausgabe

column_1 column_2 column_3
-------- -------- --------
BBBdas bleibtBBBBB AAAdas bleibtAAAAA

REGEXP_REPLACE

REGEXP_REPLACE(<expression-1>, <expression-2>, <expression-3>)

Im 1. Varchar-Ausdruck werden alle Treffer des regulären Ausdrucks gegeben im 2. Varchar-Ausdruck durch den 3. Varchar-Ausdruck ausgetauscht.

Die Funtion verwendet die java Funktion replace (siehe Java 8 replaceAll).

Das Ergebnis hat den Datentyp VARCHAR.

Beispiel

SELECT REGEXP_REPLACE('AAAdas bleibtBUHZ', '[A-Z]', 'B'), REGEXP_REPLACE('AAAdas bleibtAAAAA', 'B', ''), REGEXP_REPLACE('AAA', '.', '');

Ausgabe

column_1 column_2 column_3
-------- -------- --------
BBBdas bleibtBBBB AAAdas bleibtAAAAA