Anzeige:
Ergebnis 1 bis 2 von 2

Thema: date spalte konvertieren von CHAR zu DATE

  1. #1
    Registrierter Benutzer
    Registriert seit
    29.10.2006
    Beiträge
    14

    date spalte konvertieren von CHAR zu DATE

    Hi,

    ich möchte ein schlechtes Datenbankdesign einer MYSQl Tabelle ändern.

    In dieser Tabelle werden Tageseinträge gespeichert. Das Datum wird dabei als CHAR(8) im Format YYYMMDD gespeichert. Das halte ich nicht für sinnvoll, daher möchte ich eine Spalte 'date1' einfügen, die das Datum als date- Datentyp speichert. Also die Spalte anlegen ist kein Problem, aber kann ich mit SQL Kommandos diese Spalte automatisch anhand des Inhaltes der date- Spalte füllen, oder muss ich mir ein externes Skript dazu bauen?

    Danke für die Unterstützung,

    Andreas

    Code:
    --
    -- Tabellenstruktur für Tabelle `stockprice`
    --
    
    CREATE TABLE IF NOT EXISTS `stockprice` (
      `stock_id` int(10) unsigned NOT NULL,
      `date` char(8) NOT NULL,
      `open` float(12,4) DEFAULT NULL,
      `high` float(12,4) DEFAULT NULL,
      `low` float(12,4) DEFAULT NULL,
      `close` float(12,4) DEFAULT NULL,
      `vol` int(10) unsigned DEFAULT NULL,
      `oi` int(10) unsigned DEFAULT NULL,
      KEY `stock_id` (`stock_id`),
      KEY `date` (`date`)
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1;
    
    --
    -- Daten für Tabelle `stockprice`
    --
    
    INSERT INTO `stockprice` (`stock_id`, `date`, `open`, `high`, `low`, `close`, `vol`, `oi`) VALUES
    (1, '19910101', 0.8960, 0.8960, 0.8960, 0.8960, 0, NULL),
    (2, '19910101', 0.9830, 0.9830, 0.9830, 0.9830, 0, NULL),
    (3, '19910101', 0.4000, 0.4000, 0.4000, 0.4000, 0, NULL);

  2. #2
    Registrierter Benutzer
    Registriert seit
    29.10.2006
    Beiträge
    14
    hab die Anpassungen mit einem Skript vorgenommen:

    - Spalte date in datechar umbenannt
    - Neue Spalte date eingefügt (Typ: DATE)
    - php Skript ausgeführt:
    Code:
    <?php
    $dbhost = 'localhost:3036';
    $dbuser = 'va';
    $dbpass = 'mypwd';
    $dbname = 'mydbb';
    
    $con = mysql_connect($dbhost, $dbuser, $dbpass);
    
    if (!$con) 
      die('Could not connect: ' . mysql_error());
    
    mysql_select_db($dbname, $con);
    
    $sql = "SELECT  DISTINCT `datechar` FROM  `stockprice` ORDER BY `datechar`";
    $result = mysql_query($sql);
    
    $alldates=array();
    while($row = mysql_fetch_array($result)) {
      $alldates[]=$row[0];
    }
    
    foreach ($alldates as $datechar) {
      $sql="UPDATE `stockprice` SET `date` ='".substr($datechar,0,4)."-".substr($datechar,4,2)."-".substr($datechar,6,2)."' WHERE `datechar` = '$datechar'";
      echo $sql."\n";
      $result = mysql_query($sql);
      if (!$result) die('Update Error'. mysql_error());
    } 
    
    mysql_close($con);
    ?>

Lesezeichen

Berechtigungen

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