HSQL-Funktionen FAQ-Base

    From The Document Foundation Wiki
    < Faq‎ | Base‎ | HSQLFunctions


    Welche Funktionen sind mit den eingebauten Datenbanken verfügbar?

    Base arbeitet intern mit zwei verschiedenen Datenbanken. Die HSQLDB in der Version 1.8.0 ist seit der ersten Version von LO dabei. Firebird ist in der Version 3.0 mit der Version LO 5.3 als experimentelle Datenbank verfügbar. Die folgende Liste führt die Funktionen beider Datenbanken auf und ergänzt jedes Mal, ob die Funktion in der HSQLDB oder in Firebird zur Verfügung steht.

    HSQLDB: Die Funktion steht in dieser Datenbank nicht zur Verfügung.

    HSQLDB: Die Funktion steht in dieser Datenbank zur Verfügung.

    Wenn eine Funktion zur Verfügung steht, so kann dies bei Firebird allerdings auch bedeuten, dass sie noch nicht korrekt funktioniert. Hier sollte das Handbuch der jeweils aktuellen Base-Version zu Rate gezogen werden.

    Manche Funktionen sind nur verfügbar, wenn im Abfrageeditor auf die SQL-Ansicht umgeschaltet und SQL-Kommando direkt ausführen gewählt wird. Dies ist gekennzeichnet durch GUI. Entsprechend sind die Funktionen, die auch in der GUI funktionieren, mit GUI gekennzeichnet.

    Die grafische Oberfläche für die Erstellung von Abfragen stellt lediglich Funktionen zur Verfügung, die als Aggregatfunktionen bezeichnet werden. Sie funktionieren so, dass sie nicht nur ein Datenfeld oder einen Datensatz berücksichtigen, sondern über alle Datensätze hinweg ihre Berechnungen durchführen. Die Aggregatfunktionen können nicht neben anderen Feldern aufgerufen werden. Alle Felder müssen entweder mit einer anderen Aggregatfunktion oder mit dem Zusatz GROUP BY in die Abfrage aufgenommen werden.

    Aggregatfunktionen

    COUNT("Name")

    HSQLDB Firebird

    COUNT(DISTINCT "Name") Firebird

    Zählt alle Felder, die einen Namen enthalten. Mit dem Zusatz Distinct zählt Firebird alle unterschiedlichen Namen.
    MIN("Name")

    HSQLDB Firebird

    Zeigt den ersten Namen im Alphabet. Das Ergebnis dieser Funktion ist so formatiert, wie es dem Feldinhalt entspricht. Text wird im Ergebnis Text, Ganzzahl zu Ganzzahl, Dezimalzahl zu Dezimalzahl usw.
    MAX("Name")

    HSQLDB Firebird

    zeigt entsprechend den letzten Namen im Alphabet.
    SUM("Zahl")

    HSQLDB Firebird

    Kann nur Werte aus Zahlenfeldern addieren. Die Funktion versagt bei Datumsfeldern.

    Tipp:

    Auch bei Zeitfeldern versagt die Funktion. Hier kann folgendes hilfreich sein:

    SELECT (SUM( HOUR("Zeit") )*3600 + SUM( MINUTE("Zeit") ))*60 + SUM( SECOND("Zeit") ) AS "Sekunden" FROM "Tabelle"

    Die Summe wird von den Stunden, Minuten und gegebenenfalls Sekunden gebildet. Anschließend wird so erweitert, dass alles zusammen in einer Maßeinheit, hier in Sekunden, wiedergegeben wird. Es werden also weiter nur Zahlen mit der Summenformel addiert. Mit

    SELECT ((SUM( HOUR("Zeit") )*3600 + SUM( MINUTE("Zeit") ))*60 + SUM( SECOND("Zeit") )) / 3600.0000 AS "Stunden" FROM "Tabelle"

    wird aus der Addition wieder eine Zeit in Stunden mit den Minuten und Sekunden als Nachkommastellen. Daraus kann dann über entsprechende Formatierung auch wieder eine Zeitdarstellung in einer Abfrage oder einem Formular erreicht werden.

    Firebird: Stunde, Minute und Sekunde müssen über die Funktion EXTRACT() ermittelt werden. Allerdings kennt Firebird die Funktion DATEADD, so dass sich hier eine Möglichkeit ergibt, direkt über die Summe von Zeiten wieder eine Zeit zu erhalten:

    SELECT DATEADD( SUM( DATEDIFF( SECOND FROM TIME '00:00' TO "Zeit")) SECOND TO TIME '00:00') FROM "Tabelle"

    Die Zeitdifferenz zur Zeit 00:00 wird mittels DATEDIFF in Sekunden berechnet. Die Sekunden werden mit SUM addiert. Zu der Zeit 00:00 wird jetzt mittels DATEADD die Anzahl der Sekunden addiert und wieder als Zeit formatiert.

    AVG("Zahl")

    HSQLDB Firebird

    AVG(DISTINCT "Zahl") Firebird

    Zeigt den Mittelwert der Inhalte einer Spalte. Auch diese Funktion beschränkt sich auf Zahlenfelder. Hier sollte darauf geachtet werden, dass bei Ganzzahlen auch nur ein Ergebnis in Ganzzahlen ermittelt wird. AVG("Ganzzahl" * 1.00) zeigt dann einen Mittelwert mit maximal 2 Nachkommastellen. Mit dem Zusatz Distinct erstellt Firebird den Durchschnitter aller Zahlen.
    SOME("Ja_Nein")

    HSQLDB Firebird

    Zeigt bei Ja/Nein Feldern (boolschen Feldern) die Version an, die nur einige Felder erfüllen. Über eine gesamte Tabelle abgefragt wird bei SOME also immer «Ja» erscheinen, wenn mindestens 1 Datensatz mit «Ja» angekreuzt ist.
    EVERY("Ja_Nein")

    HSQLDB Firebird

    Wird so lange «Nein» ergeben, bis alle Datensätze mit «Ja» angekreuzt sind.
    VAR_POP

    HSQLDB Firebird

    (SUM(expr2) – SUM(expr)2 / COUNT(expr)) / COUNT(expr). Dies gibt die Populationsabweichung eines Satzes von Zahlen zurück, nachdem die Nullwerte in diesem Satz verworfen wurden.
    VAR_SAMP

    HSQLDB Firebird

    (SUM(expr2) – SUM(expr)2 / COUNT(expr)) / (COUNT(expr) – 1). Dies gibt die Stichprobenabweichung eines Satzes von Zahlen zurück, nachdem die Nullwerte in diesem Satz verworfen wurden.
    STDDEV_POP

    HSQLDB Firebird

    SQRT(VAR_POP). Berechnet die Populationsstandardabweichung und gibt die Quadratwurzel der Populationsabweichung zurück.
    STDDEV_SAMP

    HSQLDB Firebird

    SQRT(VAR_SAMP). Berechnet die kumulative Stichproben-Standardabweichung und gibt die Quadratwurzel der Probenvarianz zurück.

    Numerische Funktionen

    ABS(d)

    HSQLDB Firebird

    Gibt des absoluten Wert einer Zahl wieder, entfernt also ggf. das Minus-Vorzeichen.

    GUI

    ACOS(d)

    HSQLDB Firebird

    Gibt den Arcuscosinus wieder. Bereich: [-1, 1].

    GUI

    ASIN(d)

    HSQLDB Firebird

    Gibt den Arcussinus wieder. Bereich: [-1, 1].

    GUI

    ATAN(d)

    HSQLDB Firebird

    Gibt den Arcustangens wieder.

    GUI

    ATAN2(a,b)

    HSQLDB Firebird

    Gibt den Arcustangens über Koordinaten wieder. 'a' ist der Wert der x-Achse, 'b' der Wert der y-Achse

    GUI

    BITAND(a,b) HSQLDB

    BIN_AND(a,b) Firebird

    Sowohl die binäre Schreibweise von 'a' als auch die binäre Schreibweise von 'b' müssen an der gleichen Stelle eine '1' stehen haben, damit die '1' in das Ergebnis übernommen wird.

    BITAND(3,5) ergibt 1; 0011 AND 0101 = 0001

    GUI

    BITOR(a,b) HSQLDB

    BIN_OR(a,b) Firebird

    Entweder die binäre Schreibweise von 'a' oder die binäre Schreibweise von 'b' müssen an der gleichen Stelle eine '1' stehen haben, damit die '1' in das Ergebnis übernommen wird.

    BITOR(3,5) ergibt 7; 0011 OR 0101 = 0111

    GUI

    BIN_SHL(a,b)

    HSQLDB Firebird

    a*2b
    BIN_SHR(a,b)

    HSQLDB Firebird

    a/2b
    BITXOR(a,b) HSQLDB

    BIN_XOR(a,b) Firebird

    Entweder die binäre Schreibweise von 'a' oder die binäre Schreibweise von 'b', nicht aber beide, müssen an der gleichen Stelle eine '1' stehen haben, damit die '1' in das Ergebnis übernommen wird.

    BITXOR(3,5) ergibt 6; 0011 XOR 0101 = 0110

    GUI

    CEIL(d) HSQLDB Firebird

    CEILING(d) HSQLDB Firebird

    Gibt die kleinste Ganzzahl an, die nicht kleiner als d ist.

    GUI

    COS(d)

    HSQLDB Firebird

    Gibt den Cosinus wieder.

    GUI

    COSH(d)

    HSQLDB Firebird

    Gibt den Cosinus-Hyperbolicus wieder.

    GUI

    COT(d)

    HSQLDB Firebird

    Gibt den Cotangens wieder.

    GUI

    DEGREES(d)

    HSQLDB Firebird

    Gibt zu Bogenmaßen die Gradzahl wieder.

    GUI

    EXP(d)

    HSQLDB Firebird

    Gibt ed ( e: (2.718...) ) wieder.

    GUI

    FLOOR(d)

    HSQLDB Firebird

    Gibt die größte Ganzzahl an, die nicht größer als d ist.

    GUI

    LOG(d) HSQLDB Firebird

    LN(d) HSQLDB Firebird

    Gibt den natürlichen Logarithmus zur Basis 'e' wieder.

    GUI

    LOG(x,y)

    HSQLDB Firebird

    Gibt den Logarithmus zur Basis x wieder.

    LOG(2,8) ergibt 3, weil 23 = 8

    GUI

    LOG10(d)

    HSQLDB Firebird

    Gibt den Logarithmus zur Basis 10 wieder.

    GUI

    MOD(a,b)

    HSQLDB Firebird

    Gibt den Rest als Ganzzahl wieder, der bei der Division von 2 Ganzzahlen entsteht.

    MOD(11,3) ergibt 2, weil 3*3+2=11

    GUI

    PI()

    HSQLDB Firebird

    Gibt π (3.1415...) wieder.

    GUI

    POWER(a,b)

    HSQLDB Firebird

    POWER(2,3) = 8, weil 23 = 8

    GUI

    RADIANS(d)

    HSQLDB Firebird

    Gibt zu den Gradzahlen das Bogenmaß wieder.

    GUI

    RAND()

    HSQLDB Firebird

    Gibt eine Zufallszahl x größer oder gleich 0.0 und kleiner als 1.0 wieder.

    GUI

    ROUND(a,b)

    HSQLDB Firebird

    Rundet a auf b Stellen nach dem Dezimalzeichen.

    GUI

    ROUNDMAGIC(d)

    HSQLDB Firebird

    Löst Rundungsprobleme, die durch Fließkommazahlen entstehen. 3.11-3.1-0.01 ist eventuell nicht genau 0, wird aber als 0 in der GUI angezeigt. ROUNDMAGIC macht daraus einen tatsächlichen 0-Wert.

    GUI

    SIGN(d)

    HSQLDB Firebird

    Gibt -1 wieder, wenn 'd' kleiner als 0 ist, 0 wenn 'd'==0 und 1 wenn 'd' größer als 0 ist.

    GUI

    SIN(A)

    HSQLDB Firebird

    Gibt den Sinus eines Bogenmaßes wieder.

    GUI

    SINH(d)

    HSQLDB Firebird

    Gibt den Sinus-Hyperbolicus wieder.

    GUI

    SQRT(d)

    HSQLDB Firebird

    Gibt die Quadratwurzel wieder.

    GUI

    TAN(A)

    HSQLDB Firebird

    Gibt den Tangens eines Bogenmaßes wieder.

    GUI

    TANH(d)

    HSQLDB Firebird

    Gibt den Tangens-Hyperbolicus wieder.

    GUI

    TRUNCATE(a,b) HSQLDB Firebird

    TRUNC(a,b) HSQLDB Firebird

    Schneidet 'a' auf 'b' Zeichen nach dem Dezimalpunkt ab.

    TRUNCATE(2.37456,2) = 2.37

    GUI

    Textfunktionen

    ASCII(s) HSQLDB

    ASCII_VAL(s) Firebird

    Gibt den ASCII-Code des ersten Buchstaben des Strings wieder.

    GUI

    BIT_LENGTH(s)

    HSQLDB Firebird

    Gibt die Länge des Textes s in Bits wieder.

    HSQLDB: Jedes Zeichen wird als 16bit ausgegeben. Firebird: Normale Zeichen 8bit, Sonderzeichen 16bit.

    GUI

    CHAR(c) HSQLDB

    ASCII_CHAR(c) Firebird

    Gibt den Buchstaben wieder, der zu dem ASCII-Code c gehört. Dabei geht es nicht nur um Buchstaben, sondern auch um Steuerzeichen.

    CHAR(13) erzeugt in einer Abfrage einen Zeilenumbruch, der in mehrzeiligen Feldern eines Formulars oder in Berichten sichtbar wird.

    GUI

    CHAR_LENGTH(s)

    CHARACTER_LENGTH() HSQLDB Firebird

    Gibt die Länge des Textes in Buchstaben wieder.

    GUI

    CHAR_TO_UUID (ascii_uuid)

    HSQLDB Firebird(Bug)

    Ein String mit 36 Zeichen und einem '-' an Position 9, 14, 19 und 24 und ansonsten gültigen Hexadezimalzeichen wird in einen String ohne '-' und in Großschreibung geändert.

    CHAR_TO_UUID('A0bF4E45-3029-2a44-D493-4998c9b439A3') soll ergeben: A0BF4E4530292A44D4934998C9B439A3

    GUI

    CONCAT(str1,str2)

    HSQLDB Firebird

    Verbindet str1 + str2

    GUI

    'str1'||'str2'||'str3'

    HSQLDB Firebird

    Verbindet str1 + str2 + str3, einfachere Alternative zu CONCAT

    GUI

    'str1'+'str2'+'str3'

    HSQLDB Firebird

    Verbindet str1 + str2 + str3, einfachere Alternative zu CONCAT

    GUI

    DIFFERENCE(s1,s2)

    HSQLDB Firebird

    Gibt den ?Klang?unterschied zwischen s1 und s2 wieder. Hier wird lediglich eine Ganzzahl ausgegeben. 0 bedeutet dabei gleichen Klang. So erscheint 'for' und 'four' mit 0 gleich, 'Kürzen' und 'Würzen' wird auf 1 gesetzt, 'Mund' und 'Mond' wieder auf 0

    GUI

    GEN_UUID

    HSQLDB Firebird(Bug)

    Soll einen einzigartigen String mit 16 Byte Länge erstellen.

    GUI

    HASH(s)

    HSQLDB Firebird

    Erstellt einen Hash (Streuwert) für einen eingegebenen Text. Das Ergebnis ist eine BIGINT-Zahl.

    GUI

    HEXTORAW(s)

    HSQLDB Firebird

    Übersetzt Hexadezimalcode in andere Zeichen. Der Hexadezimalcode muss dabei aus einer durch 4 teilbaren Anzahl an Zeichen bestehen.

    HEXTORAW('0041') = 'A' (siehe auch den Hexadezimalcode über Einfügen → Sonderzeichen im Writer)

    GUI

    INSERT(s1,start,len,s2) HSQLDB Firebird

    OVERLAY(s1 PLACING s2 FROM start [FOR len]) HSQLDB Firebird

    Gibt einen Text wieder, bei dem Teile ersetzt werden. Beginnend mit «start» wird über eine Länge «len» aus dem Text s1 Text ausgeschnitten und durch den Text s2 ersetzt.

    INSERT( 'Bundesbahn', 3, 4, 'mmel') macht aus 'Bundesbahn' 'Bummelbahn', wobei die Länge des eingefügten Textes auch ohne weiteres größer als die des ausgeschnittenen Textes sein darf. So ergibt INSERT( 'Bundesbahn', 3, 5, 's und B') oder OVERLAY( 'Bundesbahn' PLACING 's und B' FROM 3 FOR 5) 'Bus und Bahn'.

    GUI (Hsqldb) GUI (Firebird)

    LCASE(s)

    HSQLDB Firebird

    Wandelt den String in Kleinbuchstaben um.

    GUI

    LEFT(s,count)

    HSQLDB Firebird

    Gibt die mit count angegebene Zeichenanzahl vom Beginn des Textes s wieder.

    GUI

    LENGTH(s)

    HSQLDB Firebird

    Gibt die Länge eines Textes in Anzahl der Buchstaben wieder.

    GUI

    LIST ([ALL | DISTINCT] expression [, separator])

    HSQLDB Firebird

    Fasst alle Einträge zu einem Feldinhalt zusammen, die in einem Feld (in Abhängigkeit von der Gruppierung anderer Felder) stehen.

    SELECT "Nachname", CAST( LIST( "Vorname", ', ' ) AS VARCHAR ( 32000 ) ) AS "Vornamen" FROM "Tabelle" GROUP BY "Nachname" Die Umformung in den VARCHAR-Dateityp ist bei Einführung von LO 5.3 noch notwendig.

    GUI

    LOCATE(search,s[,start])

    HSQLDB Firebird

    Gibt den ersten Treffer für den Begriff aus search in dem Text s wieder. Der Treffer wird numerisch angegeben: (1=left, 0=not found)

    Die Angabe eines Startes innerhalb des Textes ist optional.

    GUI

    LOWER(s)

    HSQLDB Firebird

    Wie LCASE(s)

    GUI

    LPAD(s,len[,pad])

    HSQLDB Firebird

    Der String s wird mit den in pad angegebenen Zeichen bis zur Länge len von links an aufgefüllt. Ist pad nicht angegeben, so wird ein Leerzeichen genutzt. Ist s länger als len, so wird s auf len von rechts aus gekürzt.

    GUI

    LTRIM(s)

    HSQLDB Firebird

    Entfernt führende Leerzeichen und nicht druckbare Zeichen von einem Text.

    GUI

    OCTET_LENGTH(s) Gibt die Länge eines Textes in Bytes an.

    Dies entspricht dem doppelten Wert der Zeichenanzahl. HSQLDB

    Dies entspricht dem UTF8-Wert der Zeichenanzahl. Sonderzeichen haben eine Länge von 2. Firebird

    GUI

    POSITION(s1 IN s2) HSQLDB Firebird

    POSITION(s1, s2[, start]) HSQLDB Firebird

    Wenn der erste Text in dem zweiten enthalten ist wird die Position des ersten Textes wiedergeben, ansonsten 0. Bei der 2. Version kann auch der Startpunkt der Suche festgelegt werden.

    Dies könnte statt einer Suchmöglichkeit mit «LIKE» besonders bei umfangreichen Texten genutzt werden.

    GUI

    RAWTOHEX(s)

    HSQLDB Firebird

    Verwandelt in die Hexadezimalschreibweise, Umkehr von HEXTORAW()

    GUI

    REPEAT(s,count)

    HSQLDB Firebird

    Wiederholt den Text s count Mal

    GUI

    REPLACE(s1,replace,s2)

    HSQLDB Firebird

    Ersetzt alle vorkommenden Textstücke mit dem Inhalt replace im Text s1 durch den Text s2

    GUI

    REVERSE(s)

    HSQLDB Firebird

    Schreibt den String verkehrt herum.

    GUI

    RIGHT(s,count)

    HSQLDB Firebird

    Umgekehrt zu LEFT; gibt die mit count angegebene Zeichenzahl vom Textende aus wieder.

    GUI

    RPAD(s,len[,pad])

    HSQLDB Firebird

    Der String s wird mit den in pad angegebenen Zeichen bis zur Länge len von rechts an aufgefüllt. Ist pad nicht angegeben, so wird ein Leerzeichen genutzt. Ist s länger als len, so wird s auf len von rechts aus gekürzt.

    GUI

    RTRIM(s)

    HSQLDB Firebird

    Entfernt alle Leerzeichen und nicht druckbaren Zeichen am Textende.

    GUI

    SOUNDEX(s)

    HSQLDB Firebird

    Gibt einen Code von 4 Zeichen wieder, die dem Klang von s entsprechen sollen – passt zu der Funktion DIFFERENCE()

    GUI

    SPACE(count)

    HSQLDB Firebird

    Gibt die in count angegebene Zahl an Leertasten wieder.

    GUI

    SUBSTR(s,start[,len])

    HSQLDB Firebird

    Kürzel für SUBSTRING

    GUI

    SUBSTRING(s,start[,len]) HSQLDB Firebird

    SUBSTRING(s FROM start [ FOR len])

    HSQLDB Firebird

    Gibt den Text s ab der Startposition wieder. (1=links) . Wird die Länge ausgelassen, so wird der gesamte Text wiedergegeben. Auch bei einer größeren Länge als der Textlänge wird der restliche Text wiedergegeben.

    GUI

    Liefert den Teil eines Textes ab der in FROM angegebenen Startposition, optional in der in FOR angegebenen Länge. Steht im Feld "Name" z.B. 'Roberta', so ergibt SUBSTRING("Name" FROM 3 FOR 3) den Teilstring 'bert'.

    GUI

    TRIM([{LEADING | TRAILING | BOTH}] FROM s)

    HSQLDB Firebird

    Nicht druckbare Sonderzeichen und Leerzeichen werden entfernt.

    GUI

    UCASE(s)

    HSQLDB Firebird

    Wandelt den String in Großbuchstaben um.

    GUI

    UPPER(s)

    HSQLDB Firebird

    Wie UCASE(s)

    GUI

    UUID_TO_CHAR

    HSQLDB Firebird

    Macht aus einer 16-Byte UUID eine 36 Zeichen lange UUID-Kette mit Bindestrichen. Sonderzeichen haben eine Länge von 2 Byte, so dass dafür die Zeichenzahl gekürzt werden müsste.

    UUID_TO_CHAR('LibreOffice Base') ergibt 4C696272-654F-6666-6963-652042617365

    GUI

    Datum- und Zeitfunktionen

    CURDATE() HSQLDB Firebird Gibt das aktuelle Datum wieder.

    GUI

    CURRENT_DATE HSQLDB Firebird Synonym für CURDATE(), SQL-Standard

    GUI

    CURTIME() HSQLDB Firebird Gibt die aktuelle Zeit wieder.

    GUI

    CURRENT_TIME HSQLDB Firebird Synonym für CURTIME(), SQL-Standard

    GUI

    CURRENT_TIMESTAMP HSQLDB Firebird Synonym für NOW(), SQL-Standard

    GUI

    DATEADD(string, n, datetime)

    DATEADD(n string TO datetime)

    HSQLDB Firebird

    Addiert zu einer Datums bzw. Datumszeitangabe eine entsprechende Zeit, die über die Ganzzahl n und den string festgelegt wird.

    Der Eintrag in string entscheidet darüber, in welcher Einheit der Unterschied wiedergegeben wird: millisecond, second, minute, hour, day, week, month, year. Die string-Eingaben dürfen nicht mit einfachen Anführungszeichen maskiert sein.

    GUI

    Alternativ ist für Tagesangaben in Firebird möglich: "Datum" + "Zeit" Timestamp GUI

    "Datum" + 1 Datum, Integerzahl wird als Tag gewertet GUI

    "Datum" – 1 Datum, Integerzahl wird als Tag gewertet GUI

    "Zeit" + 1 Zeit, Integerzahl wird als Sekunde gewertet GUI

    "Zeit" – 1 Zeit, Integerzahl wird als Sekunde gewertet GUI

    "Zeitstempel" + 2.75 Zeitstempel, Ganzzahl wird als Datum, Nachkommastellen als Bruchteil des Tages gewertet, hier also 2 Tage und 18 Stunden GUI

    "Zeitstempel" – 2.75 Zeitstempel GUI

    Nur als Differenz, nicht als Summe funktionieren: "Datum1" – "Datum2" Differenz in Tagen GUI

    "Zeit1" – "Zeit2" Differenz in Sekunden GUI

    "Zeitstempel1" – "Zeitstempel2" Differenz in Tagen und Bruchteilen von Tagen GUI

    DATEDIFF(string, datetime1, datetime2)

    HSQLDB Firebird DATEDIFF(string FROM datetime1 TO datetime2) HSQLDB Firebird

    Datumsunterschied zwischen zwei Datums- bzw. Datumszeitangaben.

    HSQLDB:

    Der Eintrag in string entscheidet darüber, in welcher Einheit der Unterschied wiedergegeben wird: 'ms'='millisecond', 'ss'='second', 'mi'='minute', 'hh'='hour', 'dd'='day', 'mm'='month', 'yy' = 'year'. Sowohl die Langfassung als auch die Kurzfassung ist für den einzusetzenden string möglich.

    GUI

    Firebird:

    Der Eintrag in string entscheidet darüber, in welcher Einheit der Unterschied wiedergegeben wird: millisecond, second, minute, hour, day, week, month, year. Die string-Eingaben dürfen nicht mit einfachen Anführungszeichen maskiert sein.

    GUI

    DAY(date)

    HSQLDB Firebird

    Gibt den Tag im Monat wieder. (1-31)

    GUI

    DAYNAME(date)

    HSQLDB Firebird

    Gibt den englischen Namen des Tages wieder.

    GUI

    DAYOFMONTH(date)

    HSQLDB Firebird

    Gibt den Tag im Monat wieder. (1-31), Synonym für DAY()

    GUI

    DAYOFWEEK(date)

    HSQLDB Firebird

    Gibt den Wochentag als Zahl wieder. (1 bedeutet Sonntag)

    GUI

    DAYOFYEAR(date)

    HSQLDB Firebird

    Gibt den Tag im Jahr wieder. (1-366)

    GUI

    HOUR(time)

    HSQLDB Firebird

    Gibt die Stunde wieder. (0-23)

    GUI

    MINUTE(time)

    HSQLDB Firebird

    Gibt die Minute wieder. (0-59)

    GUI

    MONTH(date)

    HSQLDB Firebird

    Gibt den Monat wieder. (1-12)

    GUI

    MONTHNAME(date)

    HSQLDB Firebird

    Gibt den englischen Namen des Monats wieder.

    GUI

    NOW()

    HSQLDB Firebird

    DATE 'NOW', TIME 'NOW', TIMESTAMP 'NOW' HSQLDB Firebird

    Gibt das aktuelle Datum und die aktuelle Zeit zusammen als Zeitstempel wieder. Stattdessen kann auch CURRENT_TIMESTAMP genutzt werden.

    GUI

    Kurzform TIMESTAMP 'NOW' usw.: GUI

    Langform CAST('NOW' AS TIMESTAMP) usw.: GUI

    QUARTER(date)

    HSQLDB Firebird

    Gibt das Quartal im Jahr wieder. (1-4)

    GUI

    SECOND(time)

    HSQLDB Firebird

    Gibt die Sekunden einer Zeitangabe wieder. (0-59)

    GUI

    WEEK(date)

    HSQLDB Firebird

    Gibt die Woche des Jahres wieder. (1-53)

    GUI

    YEAR(date)

    HSQLDB Firebird

    Gibt das Jahr aus einer Datumseingabe wieder.

    GUI

    DATE 'TODAY'

    HSQLDB Firebird

    Gibt das aktuelle Datum an, Langform: CAST('TODAY' AS DATE)

    GUI (Langform) GUI (Kurzform)

    DATE 'YESTERDAY'

    HSQLDB Firebird

    Gibt das Datum von Gestern an, Langform: CAST('YESTERDAY' AS DATE)

    GUI (Langform) GUI (Kurzform)

    DATE 'TOMORROW'

    HSQLDB Firebird

    Gibt das Datum von Morgen an, Langform: CAST('TOMORROW' AS DATE)

    GUI (Langform) GUI (Kurzform)

    TO_CHAR(datetime, string)

    HSQLDB Firebird

    Setzt eine Datums- bzw. Timestampeingabe in einen entsprechenden String um.

    Folgende Zeichen sind definiert:

    'Y' bis 'YYYY' (Jahr, 1 bis 4 Stellen)

    'IY' bis 'IYYY' (Jahr nach ISO, 2 bis 4 Stellen)

    'MM' (Monat, zweistellig)

    'MON' (Monatsname, Kurzfassung, berücksichtigt GUI-Sprache)

    'MONTH' (Monatsname, Langfassung)

    'w' (Woche des Jahres)

    'W' (Woche des Monats)

    'IW' (Woche des Jahres nach ISO-Standard)

    'd' (Tag der Woche)

    'D' (Tagesname, Kurzfassung, berücksichtigt GUI-Sprache)

    'DD' oder 'dd' (Tag des Monats, zweistellig)

    'H' (Stunde von 0-23)

    'HH' (Stunde von 0-11)

    'm' (Minute)

    's' (Sekunde)

    'a' (AM oder PM für Stunde von 0-11)

    viele andere Zeichen werden direkt übernommen:

    TO_CHAR(CURRENT_DATE,'D, DD.MON.YYYY') = Sa, 05.Nov.2016

    Die Funktion läuft nur mit bereits eingegebenen Datumswerten, die aus der Datenbank gelesen werden.

    GUI

    EXTRACT(string FROM datetime)

    HSQLDB Friebird

    Kann viele der Datums- und Zeitfunktionen ersetzen. Gibt das Jahr, den Monat, den Tag usw. von einem Datums- bzw. Datumszeitwert wieder.

    EXTRACT(DAY FROM "Datum") gibt den Tag im Monat wieder.

    HSQLDB: YEAR, MONTH, DAY, HOUR, MINUTE, SECOND

    Firebird zusätzlich: WEEK (GUI)

    Firebird (Bug): WEEKDAY, YEARDAY, MILLISECOND.

    GUI

    Systemfunktionen

    IFNULL(exp,value) HSQLDB Firebird Wenn exp NULL ist, wird value zurückgegeben, sonst exp. Stattdessen kann als Erweiterung auch COALESCE() genutzt werden. Exp und value müssen den gleichen Datentyp haben.

    IFNULL ist eine wichtige Funktion, wenn Felder durch Rechnung oder CONCAT miteinander verbunden werden. Der Inhalt des Ergebnisses wäre NULL, wenn auch nur ein Wert NULL ist. "Nachname"||', '||"Vorname" würde für Personen, bei denen z.B. der Eintrag für "Vorname" fehlt, ein leeres Feld, also NULL ergeben. "Nachname"||IFNULL(', '||"Vorname",'') würde stattdessen auch nur "Nachname" ausgeben.

    GUI

    CASEWHEN(exp,v1,v2)

    HSQLDB Firebird IIF(exp,v1,v2) HSQLDB Firebird

    Wenn exp wahr ist wird v1 zurückgegeben, sonst v2. Stattdessen kann auch CASE WHEN genutzt werden.

    CASEWHEN("a">10,'Ziel erreicht','noch üben') gibt 'Ziel erreicht' aus, wenn der Inhalt des Feldes "a" größer als 10 ist.

    GUI

    CONVERT(term,type)

    HSQLDB Firebird

    CAST(term AS type)

    HSQLDB Firebird

    Wandelt term in einen anderen Datentyp um.

    CONVERT("a",DECIMAL(5,2)) macht aus dem Feld "a" ein Feld mit 5 Ziffern, davon 2 Nachkommastellen. Ist die Zahl zu groß, so wird ein Fehler ausgegeben.

    GUI

    COALESCE(expr1,expr2,expr3,...)

    HSQLDB Firebird

    Wenn expr1 nicht NULL ist, wird expr1 wiedergegeben, ansonsten wird expr2 überprüft, danach dann expr3 usw. Sämtliche Ausdrücke müssen zumindest einen ähnlichen Datentyp haben. So geht die alternative Darstellung von Ganzzahlen und Fließkommazahlen, aber nicht auch noch des eines Datums- oder Zeitwertes.

    COALESCE("Spitzname", "Vorname", 'Herrn/Frau')

    wählt den Spitznamen, wenn dieser vorhanden ist, ansonsten den Vornamen und wenn dieser auch nicht bekannt ist, dann allgemein 'Herrn/Frau'.

    GUI

    NULLIF(v1,v2)

    HSQLDB Firebird

    Wenn v1 gleich v2 ist, wird NULL wiedergegeben, ansonsten v1.

    Die Daten müssen vom Typ her vergleichbar sein.

    GUI

    CASE v1 WHEN v2 THEN v3 [ELSE v4] END

    HSQLDB Firebird

    DECODE(v1, v2, v3, v4)

    HSQLDB Firebird

    Wenn v1 gleich v2 ist, wird v3 wiedergegeben. Sonst wird v4 wiedergegeben oder NULL, wenn kein ELSE formuliert ist.

    GUI (HSQLDB)

    GUI (Firebird)

    CASE WHEN expr1 THEN v1[WHEN expr2 THEN v2] [ELSE v4] END

    HSQLDB Firebird

    Wenn expr1 wahr ist wird v1 zurückgegeben. [Optional können weitere Fälle angegeben werden] Sonst wird v4 wiedergegeben oder NULL, wenn kein ELSE formuliert ist.

    CASE WHEN DAYOFWEEK("Datum")=1 THEN 'Sonntag' WHEN DAYOFWEEK("Datum")=2 THEN 'Montag' … END könnte per SQL den Tagesnamen ausgeben, der sonst in der Funktion nur in Englisch verfügbar ist.

    GUI

    MAXVALUE(expr [, expr ...])

    HSQLDB Firebird

    Sucht den höchsten Wert im Vergleich zu verschiedenen Ausdrücken heraus. Ergibt NULL, wenn ein Wert leer ist. Im Gegensatz zur Aggregatfunktion MAX() können hier die Werte verschiedener Felder miteinander verglichen werden.

    GUI

    MINVALUE(expr [, expr ...])

    HSQLDB Firebird

    Sucht den niedrigsten Wert im Vergleich zu verschiedenen Ausdrücken heraus. Ergibt NULL, wenn ein Wert leer ist. Im Gegensatz zur Aggregatfunktion MIN() können hier die Werte verschiedener Felder miteinander verglichen werden.

    GUI