Ergebnis 1 bis 3 von 3

Thema: Datum in String-Feld

  1. #1
    Hanno ist offline Neuer Benutzer
    Registriert seit
    21.01.2010
    Beiträge
    26

    Standard Datum in String-Feld

    Hallo Liste,

    Ich habe wieder einmal eine kleine Frage und hoffe hier Hilfe zu finden. Wahrscheinlich ist das für die Spezialisten relativ einfach zu lösen.

    Ich habe in einer Tabelle ein Feld mit einem Datum. Das Feld ist allerdings als char definiert und nicht vom Typ date, es enthält also strings. Nun ist es aber so, dass die Datumsangaben immer in folgendem Format vorliegen: 08-31-2011 usw. Also zuerst der Monat und dann der Tag. Ich würde jetzt aber gern das Datum "Deutsch" speichern also 31.08.2011. Gibt es jetzt eine Möglichkeit wie ich innerhalb des Strings die Monate und Tage "tauschen" kann, damit es richtig in der DB steht? Ausserdem bin ich mir auch gerade nicht sicher, ob es sinnvoller wäre das Format von char in date zu ändern? Für Datumsabfragen (z.B. gib mir alle Inhalte die im letzten Jahr liegen oder so ähnlich) wäre das wahrscheinlich dann einfacher wenn die Abfrage auf eine date Datentyp gemacht wird, oder?
    Ich habe also ein neues Feld (Datentyp date) angelegt. Hier würde ich jetzt gern das Datum aus dem bisherigen Datumsfeld in der richtigen Form reinschreiben. Leider bekomme ich das irgendwie nicht hin.

    Kann mir hierbei vielleicht irgendjemand helfen, oder mir einen Tipp geben?
    Für eure Hilfe und eure nette Unterstützung bedanke ich mich recht herzlich im Voraus.

    Gruss
    Hanno

  2. #2
    akretschmer ist gerade online Super-Moderator
    Registriert seit
    29.10.2006
    Ort
    Dresden
    Beiträge
    5.472

    Standard

    Zitat Zitat von Hanno Beitrag anzeigen
    Hallo Liste,

    Ich habe wieder einmal eine kleine Frage und hoffe hier Hilfe zu finden. Wahrscheinlich ist das für die Spezialisten relativ einfach zu lösen.

    Ich habe in einer Tabelle ein Feld mit einem Datum. Das Feld ist allerdings als char definiert und nicht vom Typ date, es enthält also strings. Nun ist es aber so, dass die Datumsangaben immer in folgendem Format vorliegen: 08-31-2011 usw. Also zuerst der Monat und dann der Tag. Ich würde jetzt aber gern das Datum "Deutsch" speichern also 31.08.2011. Gibt es jetzt eine Möglichkeit wie ich innerhalb des Strings die Monate und Tage "tauschen" kann, damit es richtig in der DB steht? Ausserdem bin ich mir auch gerade nicht sicher, ob es sinnvoller wäre das Format von char in date zu ändern? Für Datumsabfragen (z.B. gib mir alle Inhalte die im letzten Jahr liegen oder so ähnlich) wäre das wahrscheinlich dann einfacher wenn die Abfrage auf eine date Datentyp gemacht wird, oder?
    Ich habe also ein neues Feld (Datentyp date) angelegt. Hier würde ich jetzt gern das Datum aus dem bisherigen Datumsfeld in der richtigen Form reinschreiben. Leider bekomme ich das irgendwie nicht hin.

    Kann mir hierbei vielleicht irgendjemand helfen, oder mir einen Tipp geben?
    Für eure Hilfe und eure nette Unterstützung bedanke ich mich recht herzlich im Voraus.

    Gruss
    Hanno

    Code:
    test=# create table hanno (datum_text text, datum_date date);
    CREATE TABLE
    test=*# insert into hanno (datum_text) values ('08-31-2011');
    INSERT 0 1
    test=*# update hanno set datum_date = to_date(datum_text, 'mm-dd-yyyy');
    UPDATE 1
    test=*# select to_char(datum_date, 'dd.mm.yyyy') from hanno;
      to_char
    ------------
     31.08.2011
    (1 row)
    Und ja, speicher das als DATE. Wir sind ja hier nicht bei MySQL.


    Andreas
    --
    ads Das hatte dir akretschmer gestern schon gesagt und siehe da sobald du das machst, funktioniert es ;-)
    https://www.xing.com/profile/Andreas_Kretschmer7

  3. #3
    akretschmer ist gerade online Super-Moderator
    Registriert seit
    29.10.2006
    Ort
    Dresden
    Beiträge
    5.472

    Standard

    Zitat Zitat von akretschmer Beitrag anzeigen
    Code:
    test=# create table hanno (datum_text text, datum_date date);
    CREATE TABLE
    test=*# insert into hanno (datum_text) values ('08-31-2011');
    INSERT 0 1
    test=*# update hanno set datum_date = to_date(datum_text, 'mm-dd-yyyy');
    UPDATE 1
    test=*# select to_char(datum_date, 'dd.mm.yyyy') from hanno;
      to_char
    ------------
     31.08.2011
    (1 row)
    Und ja, speicher das als DATE. Wir sind ja hier nicht bei MySQL.


    Andreas

    Nachtrag:

    Code:
    test=# alter TABLE hanno alter column datum_text type date using to_date(datum_text, 'mm-dd-yyyy');
    ALTER TABLE
    test=*# \d hanno ;
         Table "public.hanno"
       Column   | Type | Modifiers
    ------------+------+-----------
     datum_text | date |
     datum_date | date |
    
    test=*# select to_char (datum_text, 'dd.mm.yyyy') from hanno;
      to_char
    ------------
     31.08.2011
    (1 row)
    Man braucht also keine extra Spalte ...


    Andreas
    --
    ads Das hatte dir akretschmer gestern schon gesagt und siehe da sobald du das machst, funktioniert es ;-)
    https://www.xing.com/profile/Andreas_Kretschmer7

Ähnliche Themen

  1. Antworten: 1
    Letzter Beitrag: 04.08.2011, 19:16
  2. Password Feld anlegen
    Von bony im Forum SQL
    Antworten: 4
    Letzter Beitrag: 16.06.2011, 06:33
  3. Feld updaten
    Von Zaungast im Forum Allgemeines
    Antworten: 3
    Letzter Beitrag: 04.11.2010, 20:50
  4. Antworten: 3
    Letzter Beitrag: 29.01.2009, 20:53
  5. Gleiches Feld mehrmals Abfragen
    Von toni_83 im Forum SQL
    Antworten: 3
    Letzter Beitrag: 10.07.2008, 08:22

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Links: Tobias Bauer - IT- und Funkdienstleistungen   -   Bilderrahmen-kaufen.de - Der Onlineshop für Bilderrahmen & Fotorahmen   -   Funkforum