[MySQL] Converteren varchar-kolom naar DateTime-kolom

Pagina: 1
Acties:

  • Rekcor
  • Registratie: Februari 2005
  • Laatst online: 08-10 13:03
Ik heb een oude database met daarin tabellen met kolommen UNIX-timestamps (getallen dus). Deze kolommen zijn van het type varchar(100)

Wat ik wil:
1) alle aanwezige timestamps omzetten naar MySQL's DATE_TIME-format;
2) het type van de kolom wijzigen in datetime;
3) zonder informatieverlies

Nu lukken zowel 1 als 2, maar 3 niet: alle timestamps worden dan automatisch 'geconverteerd' naar 0000-00-00 00:00:00.

Met andere woorden, ik heb een tabel

code:
1
2
3
4
5
6
7
8
9
+--------------------------+
| timestamp (varchar(100)) |
+--------------------------+
| 2007-03-13 10:00         |
+--------------------------+
| 2007-08-04 12:15         |
+--------------------------+
| 2007-11-30 04:00         |
+--------------------------+


en daarvan moet het type DATE_TIME worden zonder dataverlies.

Nu kan ik wel veel SELECT queries vinden op internet, die de data 'on-the-fly' omzet, maar ik wil echt de instellingen van de kolom veranderen zonder dataverlies.

Is dat mogelijk?

  • _js_
  • Registratie: Oktober 2002
  • Laatst online: 01-12 20:47
In stappen doen.

Eerst een datetime kolom toevoegen.
Deze vullen met de juiste data.
De oude kolom verwijderen.
De nieuwe kolom hernoemen.

  • Wortelsoep
  • Registratie: Juni 2001
  • Niet online
Ik heb laatst zoiets gedaan met een heel simpel PHP-scriptje. Gewoon datum_oud ophalen en in datum_nieuw zetten in het juiste formaat.
Misschien niet "mooi", maar het werkt perfect.

  • orf
  • Registratie: Augustus 2005
  • Laatst online: 07:22

orf

Zoiets zou kunnen werken als je een datetime kolom toevoegt:

SQL:
1
2
UPDATE tabel
SET    datum = CONCAT(timestamp, ':00')

  • Voutloos
  • Registratie: Januari 2002
  • Niet online
Is geen script voor nodig hoor, de nieuwe kolom is te vullen met een enkel update statement. :)

{signature}