Text- und Datumsfunktionen

Textfunktionen

Text fügt einen konstanten Text ein.

ohne Leerzeichen( Text ) entfernt Leerzeichen am Anfang und am Ende des Textes.

klein( Text ) wandelt den Text in Kleinbuchstaben.

groß( Text ) wandelt den Text in Großbuchstaben.

links auffüllen( Text, Zahl, Auffüll-Text ) erzeugt einen Text, der mindestens Zahl Zeichen lang ist. Wenn der Text kürzer als Zahl Zeichen ist, wird der Auffüll-Text so oft vorangestellt, bis die gewünschte Zeichenlänge erreicht ist.

rechts auffüllen( TextZahlAuffüll-Text ) arbeitet analog zu links auffüllen, stellt aber den Auffüll-Text hinten an.

Teilzeichenkette( Text, Start, Ende ) Extrahiert einen Teil aus dem Text von Start (inklusive) bis Ende (exklusive). Gezählt wird ab 0, das heißt 0 bezeichnet das erste Zeichen im Text. Beispiele:

  • Teilzeichenkette( “Hallo Welt!”, 0, 5 ) ergibt “Hallo”.
  • Teilzeichenkette( “Hallo Welt!”, 6, 10 ) ergibt “Welt”.

Datumsfunktionen

Die folgenden Funktionen lassen sich auch auf Termine und Zeitpunkte anwenden. Bei Terminen richten sie sich nach dem Startdatum des Termins.

Jahr( Datum ) liefert das Jahr zurück.

Monat( Datum ) liefert den Monat zurück.

Tag( Datum ) liefert den Monatstag zurück.

Wochentag( Datum ) liefert den Wochentag zurück.

Jahr/Monat( Datum ) liefert einen Text, zusammengesetzt aus Jahr und Monat, zurück. Dies ist hilfreich bei Monatsauswertungen. Nutzen Sie diese Funktion, um eine Tabelle nach Monaten zu gruppieren.

Start( Termin ) berechnet den Startzeitpunkt eines Termins.

Ende( Termin ) berechnet den Endzeitpunkt eines Termins.

Dauer( Termin ) berechnet die Zeitdauer des Termins, es gilt:

Dauer( Termin ) = Ende( Termin ) – Start( Termin ).

Alter( Datum ) berechnet des aktuelle Alter (einer Person) in Jahren.

Heute gibt das aktuelle Datum zurück.

Weitere Funktionen

formatieren( Zahl, Format ) erzeugt aus der Zahl einen formatierten Text. Als Format ist ein Text erforderlich:

  • 0 steht für eine Ziffer oder 0
  • # steht für eine Ziffer, die nur dargestellt wird, wenn die Zahl groß genug ist
  • . bezeichnet das Dezimaltrennzeichen (wird bei der Formatierung in das landestypische Symbol gewandelt, in Deutschland also als Komma dargestellt)
  • , bezeichnet das Gruppierungskennzeichen (wird bei der Formatierung in das landestypische Symbol gewandelt, in Deutschland also als Punkt dargestellt)

Beispiele

  • formatieren(42.5, “0″) ergibt “42″
  • formatieren(42.5, “000″) ergibt “042″
  • formatieren(42.5, “000.00″) ergibt “042,50″
  • formatieren(42.5, “0.00″) ergibt “42,50″
  • formatieren(42.5, “#,##0.00″) ergibt “42,50″
  • formatieren(1042.5, “#,##0.00″) ergibt “1.042,50″

 

135 Gedanken zu „Text- und Datumsfunktionen

  1. Hallo,
    kann es sein, dass die Funktion WOCHENTAG nur mit Datumsfeldern funktioniert? ich habe es mit einem Termin-Feld probiert und erhalte als Ergebnis nicht die Zahl, die für einen Wochentag steht, sondern den Fließtext der Funktion:

    weekday(‘Trauerfeier Datum und Zeit’) hat als Ergebnis:
    {weekday(I4)}.

    Gibt es eine Möglichkeit, ein Terminfeld in ein Datumsfeld umzuwandeln?

    Mit freundlichen Grüßen

    Martin Sundermann

    1. Hallo,
      habe inzwischen selbst eine Antwort gefunden: über die Funktion DATUM kann ich einen Termin in ein Datum umwandeln. Ein bisschen ausprobieren musste ich bei der Reihenfolge der Datumsbestandtteile Jahr, Monat, Tag:
      date(year(‘Trauerfeier Datum und Zeit’), month(‘Trauerfeier Datum und Zeit’), day(‘Trauerfeier Datum und Zeit’))
      Das Ergebnis ist ein Datumsfeld, das ich wiederum mit der Funktion WOCHENTAG verwenden kann. Geht dann natürlich auch ohne den Zwischenschritt, indem ich alles von vorneherein in die Funktion WOCHENTAG hinein nehme.

  2. Vorweg muß ich mal sagen, daß Ninox eine wirklich tolle App ist.
    Ich bin ein Datenbankanfänger und frage mich, wie ich realisiere, daß nach einem Datum (in meinem Fall ein Rechnungsdatum) eine bestimmte Zeit von z.B 14 Tagen (zahlbar bis) angezeigt wird.
    Wie rechne ich zu einem Datum einen Datumswert hinzu?
    Vielen Dank schonmal ;)

  3. Hallo!

    Ich habe in meiner Ansicht eine Spalte “letzter Kontakt”, dort wird das Datum für den letzten Kontakt mit meinem Kunden angezeigt.

    Nun möchte ich eine Formel hinterlegen, dass dieses Feld sich nach 180Tagen nach dem letzten Kontakt rot färbt.

    Kennt jemand hierfür eine Formel?

    Viele Grüße André

    1. Hier brauchst du ein weiteres Formel-Feld.
      Die Formel sollte etwa so lauten:
      –––
      if (number(now()) - number('Letzter Kontakt')) / (24 * 60 * 60 * 1000) > 180 then
      color("red")
      else
      color("white")
      –––

      Gruß
      Birger – Ninox Support

  4. Hallo,
    gibt es irgendwie die Möglichkeiten :

    a) eine URL direkt auszuführen innerhalb eines Triggers

    b) ein Textfeld als Hyperlink zu generieren.

    Hindergrund ist, dass ich gern x-callback-URL in meinen anderen Programmen von Ninox übergeben möchte. Derzeit geht es mit dem URL Feld; jedoch muss dieses erst angeklickt werden, nachdem ich die URL mit einem Trigger übergeben habe.

    vielen Dank und schönes Wochenende.

    Viele Grüße,

    Steffi

    1. Hallo,
      derzeit ist es noch nicht möglich per Script den Aufruf einer URL bzw. den Klick auf ein URL-Feld auszulösen.
      Dies ist Teil unserer Anfroderungsliste und wir werden es in einem kommenden Update realisieren.

      Birger – Ninox Support

  5. Guten Tag,
    wahrscheinlich verstehe ich das Ninox-Berechnungssystem nicht.

    Ich möchte die Anzahl Tage zwischen zwei Daten berechnen lassen. Mache ich das über die Termin-Funktion und “Dauer”, wie im Manual angedeutet? Tappe immer in die Logik Falle…

    Könnte mir bitte jemand eine Beispiel-Funktion aufzeigen, die mir die Anzahl Tage berechnet.

    Wieviel Kalender-Tage sind zwischen 01.03.2017- 30.04.2017?

    Da wäre ich sehr dankbar

    Mit freundlichem Gruß

    1. Die Funktion heißt
      yearquater('Datumsfeld')
      Da hatte sich der Tippfehler-Teufel eingeschlichen. Ab Version 2.0 wird es korrekt heißen:
      –––
      yearquarter('Datumsfeld')
      –––
      Gruß
      Birger – Ninox Support

      1. ich meine nicht die falsche Schreibweise sondern die Tatsache, daß die Funktion als solche die falschen Werte berechnet:
        Es werden nicht die QUARTALE ausgegeben, sondern die Monate, also z. B. 2017 Q1 für Daten aus Januar, 2017 Q2 für Daten aus Februar usw.
        Eben leider NICHT die vier Quartale???
        oder hab ich was übersehen?

        Gruss
        Lutz

        1. Hallo,
          ja, das kann ich nachvollziehen. Die Funktion “yearquater()” funktioniert nicht richtig, wenn Sie auf “Datum + Uhrzeit”-Felder angewendet wird. Bitte behelfen Sie sich so:
          –––
          yearquater(date('Date / Time'))
          –––
          Wir werden den Fehler beheben.

          Gruß
          Birger – Ninox Support

  6. Hallo,
    ich komme an einer Stelle nicht weiter: ich möchte eine Altersberechnung machen, die sich nicht auf das aktuelle Datum (heute) bezieht, sondern auf ein vorgegebenes, festes Datum. Anwendung: ich mache für unsere Gemeinde eine Liste der Verstorbenen. Ich habe als Daten: Geburtsdatum und Sterbedatum.
    Wenn ich die Funktion “Alter” benutze, wird das Alter immer tagesaktuell berechnet. Ich brauche aber das Alter zum Zeitpunkt des Versterbens.

    1. Hallo, man kann es mit einer Formel berechnen.
      Hierzu zuerst die beiden Daten subtrahieren und eine Zahl umwandeln. Jetzt wird die Differenz in Millisekunden angegeben. Die Millisekunden wandeln wir dann in Jahre um und runden ab:

      floor(number('Date 2' - Date) / 31536000000)

      VG, Alex

      1. Hallo Alex,
        Hallo Martin,
        die Formel berechnet aber nur die vollen Jahre, unabhängig von dem Datum. Das heißt, wenn jemand am 23.12.1946 geboren wurde und am 22.12.2016 stirbt (eigentlich noch mit 69) zeigt die Formel 70 Jahre. Um die Jahre anzupassen würde ich vorschlagen:

        let AA := year(Todestag) – year(Geburtstag);
        if month(Todestag) > month(Geburtstag) then
        AA
        else
        if month(Todestag) = day(Geburtstag) then
        AA
        else
        AA – 1

        Grüße
        Leo

  7. Hallo

    ich möchte in einem Feld den Zeitpunkt der letzten Änderung setzen lassen. D.h. sobald man etwas in einem beliebigen Feld eines Datensatzes ändert, soll der aktuelle Zeitpunkt gesetzt werden. Bei einem neuen Datensatz soll einfach die aktuelle Zeit genommen werden.

    Vielen Dank!

    1. Hallo, das geht mit Trägern auf Tabellen Ebene, die bei Ändern oder Erstellen ausgelöst werden und die aktuelle Zeit in das jeweilige Feld eintragen:

      Feld := now()

      Im Formel Editor gibt es Jetzt bzw. Heute für die aktuelle Zeit.

      VG, Alex

      1. Danke, mit dem Trigger hat es genau so funktioniert!
        (Die blöde Auto-Korrektur hat bei mir auch aus dem Trigger auch einen Träger gemacht)

        Übrigens: Super Datenbank! Endlich die Lösung für meine Datensammlungen.

        VG

      2. Hallo Alex,

        wie genau mach ich das? Habe ein (Datum-)Feld in das ich die Änderung eintragen lassen möchte.
        Muss ich dazu ein Formelfeld erstellen oder trage ich den code bei “Nach Änderung folgendes Skript ausführen ein”? oder nochmals anders?

        sorry blutiger Anfänger…

        Adi

        1. In den Tabellen-Eigenschaften gibt es die Felder “Bei neuem Datensatz…” und “Nach Änderungen…”. Dort trägst du das Script ein.
          Der Code sollte so lauten:
          –––
          'Datumsfeld' := date(now())
          –––

          Birger – Ninox Support

  8. Guten Tag,
    ich möchte in einem Text die Umlauten durch Doppelbuchstaben automatisch ersetzen. Z.B. Statt Müller – Mueller und statt Schäfer – Schaefer. Gibt es eine elegante Möglichkeit?

    Grüß
    Leo

    1. Hallo Leo!

      ich würde es so machen:

      if contains(Text, “ö”) then
      replace(Text, “ö”, “oe”)
      else
      if contains(Text, “ä”) then
      replace(Text, “ä”, “ae”)
      else
      if contains(Text, “ü”) then
      replace(Text, “ü”, “ue”)
      else
      Text

      Lg Rene

      1. Hallo Rene,
        vielen Dank – habe die “replace” Funktion in der Anleitung übersehen. Große Klasse, funktioniert sogar ohne “if then else”. Die geänderten Namen brauche ich für einen Web-Link – dort werden die “üäö” falsch interpretiert. Habe jetzt extra berechnete Felder mit Formel:

        let NN := Nachnahme;
        let NN := replace(NN, “ö”, “oe”);
        let NN := replace(NN, “ä”, “ae”);
        let NN := replace(NN, “ü”, “ue”);
        NN

        Grüße
        Leo

Hinterlasse eine Antwort