Announcement

Collapse
No announcement yet.

Select bei unterschiedlichen Zeitstempel Formaten

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Select bei unterschiedlichen Zeitstempel Formaten

    Hallo,

    ich habe versucht zu dem Problem im WWW was zu finden bin aber gescheitert.
    Ich habe eine Tabelle in der ein Zeitstempel nach folgendem Format vorliegt:
    January 6 2011 24:00:00

    Wenn ich nun versuche mir alle Zeilen auszugeben die älter als heute sind, z.B. mit diesem Statement:

    select username, valid_untill from voucher_list where valid_untill <= DATE_FORMAT(CURRENT_DATE(), '%M %d %Y %H:%i%s')

    Gibt das zwar keinen Syntaxfehler greift aber nicht zuverlässig.

    Der zweite Schritt währe dann, damit dann zu rechnen z.B.

    select username, valid_untill from voucher_list where valid_untill <= DATE_SUB(DATE_FORMAT(CURRENT_DATE(), '%M %d %Y %H:%i%s'), INTERVAL 185 DAY);

    Was die MYSQL aber mit einem Fehler quittiert

    Ich vermute das der Vergleich bei einem Monatsnamen was nicht passt.

    Hat jemand so ein Problem schon mal gelöst?

    Ich bin gespannt als wie einfch oder kompliziert sich das herrausstellt.

    NorthNortWest

  • #2
    Ich habe eine Tabelle in der ein Zeitstempel nach folgendem Format vorliegt:
    January 6 2011 24:00:00
    und lieferst damit das allerbeste Beispiel, wie man Daten völligst bescheuert speichern kann.

    Deine Vergleiche mit einem Datum können niemals funktionieren, ändere das Datenformat!

    Mit den MySQL eigenen Datums- und Zeitfunktionen hast du hier jedenfalls keine Chance.

    Wobei ich mich Frage: steht das wirklich so in der DB oder wird es nur von irgend einem Client so angezeigt.
    Bei SQL-Code bitte beachten: Formatierung von SQL in Beiträgen

    Comment


    • #3
      Hallo Dibo,

      steht so in der DB. Werde also mal sehen müssen ob beim Befüllen nicht ein zweiter intelligenterer Zeitstempel mitgeschrieben werden kann, aber das wird dauern, da ich den Applicationsteil der das schreibt erst mal identifizieren muss.

      Aber danke für Deine Bestätigung meines verdachts.

      NortNortwest

      Comment


      • #4
        Das Format ist ein RFCnnn-Format (wobei ich jetzt für nnn zu faul bin zum suchen), üblicherweise wird dieser bei RSS-Feeds o.ä. geliefert.

        Versuche ein geeignetes Importformat zu bekommen YYYYMMDDHHNNSS geht genauso wie YYYY-MM-DD HH:NN:SS

        wichtig ist halt, das MySQL auch in der Lage ist es zu transponieren.

        Ansonsten bleibt dir nur es in deiner Applikation, beim Insert od. Update, umzuwandeln, danach zu suchen oder als Vergleich her zuziehen ist zwar möglich aber glaube mir, das willst du nicht wirklich.
        Bei SQL-Code bitte beachten: Formatierung von SQL in Beiträgen

        Comment


        • #5
          Hallo Dibo,

          hätte ich die möglichkeit das über einen neuen View zu lösen?
          Wenn ich also in dem View beibringe den Timestamp und eine ID aus meiner Tabelle in einen View zu wandeln in dem es halt zwei Timestamps gibt, einen mit dem RFC format und einen mit einem MYSQL genehmen Format.

          Geht sowas, oder ist das der falsche Ansatz?

          NorthNortWest

          Comment


          • #6
            Mit einem View setzt du bereits zu spät an.

            Schreibe dir eine Stored Function welche den Timestamp in ein MySQL-Timestamp umwandelt, diese Funktion kannst du dann in einem INSERT- und einem UPDATE-Trigger aufrufen.

            Edit: Für die Umwandlung kannst du STR_TO_DATE() nutzen, wobei 24:00:00 natürlich eine ungültige Uhrzeit ist.
            Zuletzt editiert von dibo33; 11.01.2011, 02:21.
            Bei SQL-Code bitte beachten: Formatierung von SQL in Beiträgen

            Comment

            Working...
            X