Zum Inhalt springen

Berechnen von Intervall mit Datumszeit


metek allgemein User
Gehe zur Lösung Gelöst von Alex Krause,

Empfohlene Beiträge

Hallo @René Röder,

ich hoffe ich habe die Frage richtig verstanden. Ohne Eingabe können wir uns nicht das aktuelle Datum ausgeben lassen und leider auch keinen Zeitpunkt berechnen (lediglich die Dauer), aber wenn ich es richtig verstehe, dann gibt es in der smap bereits einen Zeitstempel oder Datumsbaustein? Diesen können wir auseinanderpflücken und darauf referenzieren. 

Dafür ist eine "kleine" Formel notwendig, wenn es um die Ausgabe des gleichen Tages, ein Jahr später, geht. 

IF(EQUALS(SUBTEXT(TEXT({Timestamp}),9,2),"23"),CONCAT(LEFT(TEXT({Timestamp}),8),"24"), IF(EQUALS(SUBTEXT(TEXT({Timestamp}),9,2),"24"),CONCAT(LEFT(TEXT({Timestamp}),8),"25"), IF(EQUALS(SUBTEXT(TEXT({Timestamp}),9,2),"25"),CONCAT(LEFT(TEXT({Timestamp}),8),"26"), IF(EQUALS(SUBTEXT(TEXT({Timestamp}),9,2),"26"),CONCAT(LEFT(TEXT({Timestamp}),8),"27"), IF(EQUALS(SUBTEXT(TEXT({Timestamp}),9,2),"27"),CONCAT(LEFT(TEXT({Timestamp}),8),"28"), IF(EQUALS(SUBTEXT(TEXT({Timestamp}),9,2),"28"),CONCAT(LEFT(TEXT({Timestamp}),8),"29"), IF(EQUALS(SUBTEXT(TEXT({Timestamp}),9,2),"30"),CONCAT(LEFT(TEXT({Timestamp}),8),"31"))))))))

Diese Formel sucht sich die letzten beiden Stellen des Jahres (Stelle 9 und 10 des Datums), vergleicht diese mit den Jahren 23-30 und gibt dann die Jahre 24-31 aus und verbindet diese dann mit den ersten 8 Stellen des Datums (TT.MM.JJ). Damit hat man ein Feld, dass bis inklusive des 31.12.2030 funktioniert.

image.png.b3118fe772e1a517f7878d9a78aa64a3.png

Während ich das geschrieben habe, ist mir aufgefallen, dass die Formel noch deutlich verschlankt werden könnte - wer herausfindet wie genau, dem gibt @Thomas Hoffmann auf dem smapland Festival ein Kaltgetränk seiner Wahl auf meinen Deckel aus. Mitarbeiter von smapOne und deren Verwandte sind vom Gewinnspiel ausgeschlossen. 

Bearbeitet von Moritz Münzenmaier
  • Like 1
  • Verwirrt 1
  • Haha 2
Link zu diesem Kommentar
Auf anderen Seiten teilen

@Moritz Münzenmaier @Moritz danke für die Fixe antwort...die fixe Moritze 🙂

 

Danke für die Formel, aber dann müsste ich die Jahre immer vorgeben, was ich nicht möchte, da hier eine Vergleichsoperation angewendet wird und somit eine Endlichkeit oder eine sehr lange Formel die Folge wären.... Mir wäre eine Berechnung, z.b. Addition, lieber.

 

Mal ne Frage, ich kann mir doch über die Formatooption im Bericht nur die Jahreszahl ausgeben lassen, diese müsste man doch addieren können. Kann ich mir mit der Funktion nicht auch innerhalb der Formel das Jahr ausgeben lassen? Der Tag interessiert mich eigentlich nicht. Monat und Jahr sind bei uns ausschlaggebend.

Da es den Zeitstempel gibt, gibt es ja irgendwo ein Datum, ähnlich wie die Funktion "Heute()". Kann man sich das nicht darüber holen? 

 

  • Like 1
Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 1 Stunde schrieb René Röder:

Mir wäre eine Berechnung, z.b. Addition, lieber.

Das geht leider nicht, hierfür sind noch keine Funktionen/Formeln verfügbar. Deshalb der etwas sperrige Workaround...

 

vor 1 Stunde schrieb René Röder:

Mal ne Frage, ich kann mir doch über die Formatooption im Bericht nur die Jahreszahl ausgeben lassen, diese müsste man doch addieren können.

Leider auch hier: Nein. Weil im Bericht  nicht mehr gerechnet werden kann 😞

 

vor 1 Stunde schrieb René Röder:

Da es den Zeitstempel gibt, gibt es ja irgendwo ein Datum, ähnlich wie die Funktion "Heute()". Kann man sich das nicht darüber holen?

Nein, eine heute() oder now()-Funktion gibt es (leider) nicht. Es gibt mehrere Zeitstempel, die einen Datensatz begleiten (konkret clientCreatedDate, sendDate, receviedDate und completedDate), diese stehen im Designer und während dem Ausfüllen der smap allerdings nicht zur Verfügung.

 

  • Verwirrt 1
Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo @René Röder

wir können leider innerhalb der smap nicht mit dem Datumsbaustein rechnen, sondern diesen nur als String weiterverarbeiten. Da der String die "Textversion" von bspw. 23 ist, schmeißt der Designer einen Fehler, wenn ich dort eine Addition durchführen möchte. Auch wenn es wie eine Zahl aussieht, verhält es sich nicht wie eine Zahl. Ich vergleiche das immer mit  "Was kommt dabei raus, wenn ich die 276 + Hund rechne?" 😄 

Folgende Formel löst das Problem, ist aber nochmal eine ganze Ecke umständlicher als die oben genannte 😄 Was hier passiert ist, dass die letzten beiden Zahlen des Datums genommen werden, diese dann über eine komplexe Formel in eine Zahl umgewandelt werden und dann die Addition um eins durchgeführt wird. Die funktioniert, außer im Jahr 2099, sehr zuverlässig, ist aber wirklich ein Musterbeispiel für Unadministrierbarkeit. 

CONCAT(LEFT(TEXT({Timestamp}),8),TEXT(SUM(IF (GREATERTHANOREQUAL(LENGTH(SUBTEXT(TEXT({Timestamp}),9,2)),1),IF(EQUALS(RIGHT(SUBTEXT(TEXT({Timestamp}),9,2),1)"1"),1, IF(EQUALS(RIGHT(SUBTEXT(TEXT({Timestamp}),9,2),1)"2"),2, IF(EQUALS(RIGHT(SUBTEXT(TEXT({Timestamp}),9,2),1)"3"),3, IF(EQUALS(RIGHT(SUBTEXT(TEXT({Timestamp}),9,2),1)"4"),4, IF(EQUALS(RIGHT(SUBTEXT(TEXT({Timestamp}),9,2),1)"5"),5, IF(EQUALS(RIGHT(SUBTEXT(TEXT({Timestamp}),9,2),1)"6"),6, IF(EQUALS(RIGHT(SUBTEXT(TEXT({Timestamp}),9,2),1)"7"),7, IF(EQUALS(RIGHT(SUBTEXT(TEXT({Timestamp}),9,2),1)"8"),8, IF(EQUALS(RIGHT(SUBTEXT(TEXT({Timestamp}),9,2),1)"9"),9))))))))),0),IF (GREATERTHANOREQUAL(LENGTH(SUBTEXT(TEXT({Timestamp}),9,2)),2),IF(EQUALS(LEFT(RIGHT(SUBTEXT(TEXT({Timestamp}),9,2),2),1)"1"),10, IF(EQUALS(LEFT(RIGHT(SUBTEXT(TEXT({Timestamp}),9,2),2),1)"2"),20, IF(EQUALS(LEFT(RIGHT(SUBTEXT(TEXT({Timestamp}),9,2),2),1)"3"),30, IF(EQUALS(LEFT(RIGHT(SUBTEXT(TEXT({Timestamp}),9,2),2),1)"4"),40, IF(EQUALS(LEFT(RIGHT(SUBTEXT(TEXT({Timestamp}),9,2),2),1)"5"),50, IF(EQUALS(LEFT(RIGHT(SUBTEXT(TEXT({Timestamp}),9,2),2),1)"6"),60, IF(EQUALS(LEFT(RIGHT(SUBTEXT(TEXT({Timestamp}),9,2),2),1)"7"),70, IF(EQUALS(LEFT(RIGHT(SUBTEXT(TEXT({Timestamp}),9,2),2),1)"8"),80, IF(EQUALS(LEFT(RIGHT(SUBTEXT(TEXT({Timestamp}),9,2),2),1)"9"),90))))))))),0),1)))

Eine andere Lösung fällt mir nicht ein. 

 

Bearbeitet von Moritz Münzenmaier
  • Like 1
  • Danke 1
Link zu diesem Kommentar
Auf anderen Seiten teilen

  • Lösung
vor 20 Stunden schrieb Moritz Münzenmaier:

Hallo @René Röder

wir können leider innerhalb der smap nicht mit dem Datumsbaustein rechnen, sondern diesen nur als String weiterverarbeiten. Da der String die "Textversion" von bspw. 23 ist, schmeißt der Designer einen Fehler, wenn ich dort eine Addition durchführen möchte. Auch wenn es wie eine Zahl aussieht, verhält es sich nicht wie eine Zahl. Ich vergleiche das immer mit  "Was kommt dabei raus, wenn ich die 276 + Hund rechne?" 😄 

Folgende Formel löst das Problem, ist aber nochmal eine ganze Ecke umständlicher als die oben genannte 😄 Was hier passiert ist, dass die letzten beiden Zahlen des Datums genommen werden, diese dann über eine komplexe Formel in eine Zahl umgewandelt werden und dann die Addition um eins durchgeführt wird. Die funktioniert, außer im Jahr 2099, sehr zuverlässig, ist aber wirklich ein Musterbeispiel für Unadministrierbarkeit. 

CONCAT(LEFT(TEXT({Timestamp}),8),TEXT(SUM(IF (GREATERTHANOREQUAL(LENGTH(SUBTEXT(TEXT({Timestamp}),9,2)),1),IF(EQUALS(RIGHT(SUBTEXT(TEXT({Timestamp}),9,2),1)"1"),1, IF(EQUALS(RIGHT(SUBTEXT(TEXT({Timestamp}),9,2),1)"2"),2, IF(EQUALS(RIGHT(SUBTEXT(TEXT({Timestamp}),9,2),1)"3"),3, IF(EQUALS(RIGHT(SUBTEXT(TEXT({Timestamp}),9,2),1)"4"),4, IF(EQUALS(RIGHT(SUBTEXT(TEXT({Timestamp}),9,2),1)"5"),5, IF(EQUALS(RIGHT(SUBTEXT(TEXT({Timestamp}),9,2),1)"6"),6, IF(EQUALS(RIGHT(SUBTEXT(TEXT({Timestamp}),9,2),1)"7"),7, IF(EQUALS(RIGHT(SUBTEXT(TEXT({Timestamp}),9,2),1)"8"),8, IF(EQUALS(RIGHT(SUBTEXT(TEXT({Timestamp}),9,2),1)"9"),9))))))))),0),IF (GREATERTHANOREQUAL(LENGTH(SUBTEXT(TEXT({Timestamp}),9,2)),2),IF(EQUALS(LEFT(RIGHT(SUBTEXT(TEXT({Timestamp}),9,2),2),1)"1"),10, IF(EQUALS(LEFT(RIGHT(SUBTEXT(TEXT({Timestamp}),9,2),2),1)"2"),20, IF(EQUALS(LEFT(RIGHT(SUBTEXT(TEXT({Timestamp}),9,2),2),1)"3"),30, IF(EQUALS(LEFT(RIGHT(SUBTEXT(TEXT({Timestamp}),9,2),2),1)"4"),40, IF(EQUALS(LEFT(RIGHT(SUBTEXT(TEXT({Timestamp}),9,2),2),1)"5"),50, IF(EQUALS(LEFT(RIGHT(SUBTEXT(TEXT({Timestamp}),9,2),2),1)"6"),60, IF(EQUALS(LEFT(RIGHT(SUBTEXT(TEXT({Timestamp}),9,2),2),1)"7"),70, IF(EQUALS(LEFT(RIGHT(SUBTEXT(TEXT({Timestamp}),9,2),2),1)"8"),80, IF(EQUALS(LEFT(RIGHT(SUBTEXT(TEXT({Timestamp}),9,2),2),1)"9"),90))))))))),0),1)))

Eine andere Lösung fällt mir nicht ein. 

 

Ich habe deine Formel mal verkleinert:

CONCAT(SUBTEXT(TEXT({Timestamp}), 1, 8), TEXT(SUM(MUL(TEXTPOS("123456789", SUBTEXT(TEXT({Timestamp}), 9, 1)), 10), SUB(TEXTPOS("0123456789", SUBTEXT(TEXT({Timestamp}), 10, 1)), 1), 1)))

Bearbeitet von Alex Krause
Jetzt sollte die Formel passen :)
  • Like 2
  • Danke 2
Link zu diesem Kommentar
Auf anderen Seiten teilen

27 minutes ago, Alex Krause said:

Ich habe deine Formel mal verkleinert:

CONCAT(SUBTEXT(TEXT({Timestamp}), 1, 8), TEXT(SUM(MUL(TEXTPOS("123456789", SUBTEXT(TEXT({Timestamp}), 9, 1)), 10), SUB(TEXTPOS("0123456789", SUBTEXT(TEXT({Timestamp}), 10, 1)), 1), 1)))

@Alex KrauseDas ist zu gleichen Teilen genial und elegant. Vielen Dank, wäre ich im Leben nicht drauf gekommen mich da so anzunähern!

Werde ich mir in Zukunft wahrscheinlich klauen. 😄 

Bearbeitet von Moritz Münzenmaier
  • Like 1
Link zu diesem Kommentar
Auf anderen Seiten teilen

Bitte melde Dich an, um einen Kommentar zu hinterlassen

Du kannst nach der Anmeldung einen Kommentar hinterlassen



Jetzt anmelden
×
×
  • Neu erstellen...