SQL-Funktion – Ermittlung der Überlappung von 2 Zeiträumen

Ab und an geht es mal darum in einer Datenbank den Überlappungs-Zeitraum von 2 Zeiträumen zu ermitteln, oder auch nur ob 2 Zeiträume überhaupt überlappen. Heute stand ich vor dieser Problematik und habe auch keine eingebaute Funktion im MS-SQL-Server gefunden. Die folgenden 2 Funktionen, alle Angaben ohne Gewähr, führen jedenfalls bei mir zum gewünschten Ergebnis:

SQL-Funktion – Ermittlung der Überlappung von 2 Zeiträumen weiterlesen

Fundstück: Neulich beim Fahrkartenkauf

 Schön, dass selbst der Fahrkartenautomat es einsieht.. Leider ändert das nichts daran, dass man diese Fahrkarten kaufen und bezahlen möchte.

Selbstkritik beim Fahrkartenkauf: die Tickets sind zu teuer, der zu zahlende Betrag ist zu groß

Edit: Das, was mih hierbei konkret erheitert/erschüttert ist der Ansatz, den der/die Programmierer gewählt haben. Anstelle einer etwas aussagekräftigeren Fehlermeldung, die vielleicht begründet dass und wieso eine Zahlung nicht möglich ist, wurde diese Umsetzung gewählt. Im Kontex eines Fahrkartenkaufs, nicht die klügste Wahl. Zumal dann nicht, wenn Fahrkarten sowieso in der allgemeinen Pauschalkritik stehen, zu teuer zu sein.

Amsterdam – ein Reisebericht aus 72 Stunden

Zurück von einem langen Wochenende möchte ich doch, nicht zuletzt auch zur Unterstützung der eigenen Erinnerungen, einen kurzen Reisebericht zur schönen Grachtenstadt Amsterdam los werden:

Am Mittwoch morgen ging es los – Zugabfahrt kurz nach 7 und vor uns lagen knapp 8 Stunden Fahrt mit Umsteigen in Frankfurt/Main Hbf. Gegen 15:00 dann in Amsterdam angekommen und keine 3 Schritte aus dem Bahnhof raus, wir schienen etwas orientierungslos zu wirken, wurden wir von freundlichen Personal der Amsterdamer Verkehrsbetriebe angesprochen. Keine 5 Minuten später hielten wir je 1 72-Stunden Ticket für den ÖPNV in der Hand und waren auf dem Weg in unsere Unterkunft. Diese hatte ich vor ein paar Wochen günstig „geschossen“ – eine Neueröffnung. Eine Apartment-Anlage östlich vom Zentrum gelegen: Yays Concierged Apartment in der Oosternburgegracht, 270€ für 2 Personen und 3 Nächte, ohne Frühstück, dafür mit Supermarkt um’s Eck und Küche in der Wohnung. 10 Minuten später, nach wiederholtem freundlichen Checkin stehen wir in unserer Bleibe für die kommenden 72 Stunden.

Amsterdam – ein Reisebericht aus 72 Stunden weiterlesen

Mit dem Boot durch die Leipziger Wasserstraßen

Am vergangenen Sonntag hatte ich das Vergnügen einer Bootstour durch Leipzig. Es ist schon spannend und überraschend, wie anders die Stadt aus dieser Perspektive aussieht. Leipzig ist eine großartige Stadt; es ist nicht nur, dass man sich hier sofort heimisch fühlt. Die Stadt bietet auch so viele Möglichkeiten sie zu entdecken und so viele Facetten zu erkunden.

Es gibt verschiedene Anbieter von Bootstouren und glücklicherweise führte uns „das Schicksal“ zum Elsterboot am Rennbahnsteg (siehe Tripadvisor). Mit dem Elektroboot durch die Kanäle ist eine Erfahrung wert, und ein kompetenter und freundlicher Kapitän rundeten das Ganze noch ab. Ein paar Impressionen gilt es dann doch auch zu teilen…

Mit dem Boot durch die Leipziger Wasserstraßen weiterlesen

Fundstück: bestrafender Login-Dialog bei Cinestar

Schön, wenn man (wie Cinestar) versucht Kunden über ein Bonusprogramm, seines Zeichens „CineStar CARD“ zu binden… Ich bin ja auch gern bereit sowas zu nutzen.

Wenn man aber beim Zugriff auf die Webseite, schon vor dem Login darüber informiert wird, dass man doch eine gültige Email eingeben soll, und man als Strafe das zugehörige Eingabefeld gleich entfernt, dann bezweifle ich irgendwie, ob die Entwickler die Idee so ganz verstanden haben.

ROLLBACK TRANSACTION bei Tabellen-Variablen

Im Zusammenhang mit der Entwicklung einer Cache-Logik bin ich auf ein kleines Problem gestoßen, auf dass ich hier kurz hinweisen möchte. Nehmen wir an, wir haben folgendes SQL-Skript:

  1. Leeren eines Tabelle
  2. Befüllen der Tabelle mit frischen Daten
Packt man die beiden Befehle (DELETE und INSERT) nicht in eine Transaktion, kann es passieren, dass man bei einem INSERT-Fehler auf einmal mit einer leeren Tabelle da steht (was ja nicht immer so gewollt ist). 
Also habe ich folgende erweiterte Logik umgesetzt:
  1. Erstelle eine Transaktion
    1. Leeren eines Tabelle
    2. Befüllen der Tabelle mit frischen Daten
  2. wenn beides ohne Probleme lief, dann festschreiben (COMMIT)
  3. wenn es ein Problem gab, Rückgängig machen (ROLLBACK)
In meinen Tests mit einer Tabellen-Variable (@table) wollte das aber partout nicht funktionieren und ich bin wahnsinnig geworden (fast jedenfalls). Eine Änderung der Tabelle von Variable auf Temp (also statt @table auf #table) und schon klappt alles.
In einem Blog-Post wurde mein Verdacht dann auch bestätigt: es geht einfach nicht. Rollback wird bei Tabellen-Variablen nicht unterstützt…