Information ausblenden
Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, MariaDB, Oracle, Sql-Server, Postgres, Access uvm

Einfache update Frage

Dieses Thema im Forum "MySQL und MariaDB" wurde erstellt von hans32, 19 Dezember 2013.

  1. hans32

    hans32 Benutzer

    Hallo zusammen,

    wahrscheinlich nur eine Kleinigkeit:

    Ich importiere CSV Dateien mit Messwerten in eine MySQL Datenbank. Diese haben aber nur eine Date und eine Time Spalte. Da ich für die Abfrage jedoch eine Datetime- Spalte benötige, mache ich folgendes nach dem CSV-Import:

    update tabelle set Datetime = concat(DATE,' ',TIME)

    Außerdem stimmt die Zeitzone nicht, das korrigiere ich anschließend mit:

    update tabelle set Datetime = DATE_ADD(Datetime, INTERVAL 2 HOUR)

    Im Prinzip funktioniert das so auch. Mittlerweile ist die DB jedoch recht groß geworden und die Abfrage dauert entsprechend lange. Eleganter wäre es natürlich, wenn ich nur die importierten Zeilen updaten würde.

    Also ungefähr so:
    update tabelle set Datetime = concat(DATE,' ',TIME) AND DATE_ADD(Datetime, INTERVAL 2 HOUR) WHERE Datetime IS NULL

    ..so geht es allerdings nicht.. Kann mir hier jemand helfen?
     
  2. akretschmer

    akretschmer Datenbank-Guru


    tausche das AND gegen ein Komma.
     
  3. ukulele

    ukulele Datenbank-Guru

    Ich würde sagen das muss geschachtelt werden, oder kann man die selbe Spalte in einem Update Statement 2x hintereinander anfassen?
    update tabelle set Datetime = DATE_ADD(concat(DATE,' ',TIME) , INTERVAL 2 HOUR) WHERE Datetime IS NULL
     
  4. hans32

    hans32 Benutzer

    Wenn ich folgendes eingebe:

    update tabelle set `Datetime` = concat(`DATE`,' ',`TIME`), DATE_ADD(`Datetime`, INTERVAL 2 HOUR) WHERE `Datetime` IS NULL

    bekomme ich folgenden Fehler:

    #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'DATE_ADD(`Datetime`, INTERVAL 2 HOUR) WHERE `Datetime` IS NULL' at line 1

    Leider funktioniert das so nciht...
     
  5. hans32

    hans32 Benutzer

    Danke ukulele, so hats geklappt!
     
  6. akretschmer

    akretschmer Datenbank-Guru


    Ja, sorry, hatte das falsch geparst...
     
  7. akretschmer

    akretschmer Datenbank-Guru

    Ach so: du hast nun natürlich 3 Spalten für eine Information. Du würdest besser kommen, die Daten erst einmal in eine extra Tabelle zu nehmen und von da via insert into ... select ... in die Zieltabelle zu holen und in dieser nur eine Spalte zu haben.
     
Die Seite wird geladen...

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden