[MySQL 4.1] Welcher Feldtyp ist der richtige?

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

  • [MySQL 4.1] Welcher Feldtyp ist der richtige?

    Hallo Leute,

    sicher eine simple Sache, nur ich brings wieder mal nicht auf die Reihe
    Es geht darum den richtigen Feldtyp einer Spalte zuzuordnen.

    Um was es geht?
    Ich habe in einer Spalte eigendlich ein Datum stehen und zwar im Format MM.YYYY

    Mit Char bzw. Varchar wollt ich nicht arbeiten, hab ich halt decimal(2,4) genommen.
    Tja und jetzt hab ich den Furz beinander, weil ich genau nach dieser Spalte natürlich sortieren muß, was er ja nicht macht weil decimal
    So bekomme ich als Ausgabe bei einen ORDER BY spalte ASC:
    01.2007
    02.2006
    02.2007
    03.2001
    03.2006

    anstelle
    03.2001
    02.2006
    03.2006
    01.2007
    02.2007

    Jetzt hätte ich es auch mit dem Typ DATE versucht, aber da ist das Format YYYY-MM-DD - also verkehrt und DD hab ich ja keine.

    Wie müsste ich jetzt meinen Feldtyp festlegen, damit ich das sauber hinbekomme?

    lg. und vielen Dank
    Werner
    bidgo - Benzin im Blut
    Wir wollen Dich und Deine Karre
    Videoblog & Bilderblog zu verschiedenen Bereichen

  • #2
    dann nimm doch immer den ersten eines monats.

    Comment


    • #3
      Ja das wäre eine Idee gewesen die ich heute auch schon hatte.
      Ich glaub ich werde auch um das nicht herumkommen, ausser MySQL bietet mir eine solche Sortiermöglichkeit, wie es das auch bei den ARRAY's gibt.
      KSORT, ASORT usw.
      bidgo - Benzin im Blut
      Wir wollen Dich und Deine Karre
      Videoblog & Bilderblog zu verschiedenen Bereichen

      Comment


      • #4
        was soll daran besser sein?

        Comment


        • #5
          dann mach doch so

          2001.03
          2002.01
          ...

          ist zwar etwas "von hinten durch die Brust ins Auge" aber es tut genau das was du willst

          Comment


          • #6
            Original geschrieben von asp2php
            dann mach doch so

            2001.03
            2002.01
            ...

            ist zwar etwas "von hinten durch die Brust ins Auge" aber es tut genau das was du willst
            Hmmm.....?
            Die Idee wäre gar nicht so schlecht - muß ich zwar in einigen Scripten Änderungen vornehmen, aber das täte ich in Kauf nehmen.

            Kannst Du mir bitte noch eine Kleinigkeit verraten?
            Da ich bereits über 300.000 Datensätze eben in diesen Format vorliegen habe (MM.YYYY), ist hier ein manuelles ändern "fast" unmöglich.
            Ja ich weiß - früher drann denken
            Aber wenn das Jeder machen würde, gäbe es solche Foren nicht, oder?
            Aber gibt es eine Möglichkeit mit einer UPDATE Anweisung die vorhandenen Einträge zu vertauschen? Also MM.YYYY in YYYY.MM

            Klarerweise müsste ich zuerst beim TYP die Länge ändern von decimal(2,4) auf decimal(4,4) und dann auf decimal(4,2), damit mir keine Daten verloren gehen.

            Da wäre mir echt geholfen und ich kann die unzähligen LIKE's für das Jahr endgültig den Jordan runterschwemmen und so wieder performanter sein.
            Denn jetzt mache ich ja ein
            PHP Code:
            SELECT spalten FROM tabelle WHERE spalte LIKE '%YYYY1%' OR 
            spalte LIKE '%YYYY2%' OR 
            spalte LIKE '%YYYY3%' OR 
            spalte LIKE '%YYYY4%' OR usw.... 
            Danke vielmals
            lg.
            Werner
            bidgo - Benzin im Blut
            Wir wollen Dich und Deine Karre
            Videoblog & Bilderblog zu verschiedenen Bereichen

            Comment


            • #7
              warum nicht date?

              Comment


              • #8
                Original geschrieben von penizillin
                warum nicht date?
                Naja, ich denke das Problem liegt daran, dass ich beits jede Menge Daten habe im Format MM.YYYY.
                Wenn ich den TYP auf DATE ändere bekomme ich bei allen Datensätzen 0000-00-00 eingetragen und diese Daten wären futsch, was einer mittelgroßen Katastrophe gleichkommen würde.
                Es handelt sich bei diesen Daten um Erstzulassungsdaten von KFZ-Fahrzeugen - und da hast Du nun mal nur das Monat und das Jahr, aber keinen Tag.
                bidgo - Benzin im Blut
                Wir wollen Dich und Deine Karre
                Videoblog & Bilderblog zu verschiedenen Bereichen

                Comment


                • #9
                  probiere

                  update tbl set col=concat(right(col,4),'.',left(col,2))

                  eventuell muss du auch noch die Spalte in varchar konvertieren, wenn left und right meckern

                  Comment


                  • #10
                    Original geschrieben von web4free
                    Naja, ich denke das Problem liegt daran, dass ich beits jede Menge Daten habe im Format MM.YYYY.
                    Wenn ich den TYP auf DATE ändere bekomme ich bei allen Datensätzen 0000-00-00 eingetragen und diese Daten wären futsch, was einer mittelgroßen Katastrophe gleichkommen würde.
                    Es handelt sich bei diesen Daten um Erstzulassungsdaten von KFZ-Fahrzeugen - und da hast Du nun mal nur das Monat und das Jahr, aber keinen Tag.


                    neue spalte anlegen, update, alte spalte löschen. wo ist das problem?

                    wenn du keinen tag brauchst, trage den ersten ein.

                    Comment


                    • #11
                      Original geschrieben von asp2php
                      probiere

                      update tbl set col=concat(right(col,4),'.',left(col,2))

                      eventuell muss du auch noch die Spalte in varchar konvertieren, wenn left und right meckern
                      GEIL!!!
                      Beim Typ decimal hat er mir alles auf 99.9999 gesetzt
                      Änderung des Typen auch VARCHAR hat dann das Ergebnis gebracht.

                      Ab heute bist Du im monatlichen Abendgebet mit eingeschlossen
                      Hast mir schon viel geholfen in diesem Forum, danke schön.

                      Ich gehe aber eh in der richtigen Annahme dass decimal(5,2) VARCHAR(7) vorzuziehen ist?

                      Vielen Dank jedenfalls.
                      Ich hoffe ich kann auch mal helfen!

                      lg.
                      Werner
                      bidgo - Benzin im Blut
                      Wir wollen Dich und Deine Karre
                      Videoblog & Bilderblog zu verschiedenen Bereichen

                      Comment


                      • #12
                        Ne sinnvoller Erklärung, warum du nicht Date benutzt hast, hast du aber immer noch nicht? Gut, du kannst größtenteils ohnehin auf die Date-Funktionen verzichten, aber ein Decimal ist es deswegen noch lange nicht.

                        Comment

                        Working...
                        X