Autor Zpráva
visionic
Profil *
Ahoj všem,

vyskytl se mi tu problém s datumem v MySQL. Klient mi poslal export z nějaké ne webové aplikace a všechny datumy (celkem 2700) mají formát:
6. 9. 1945 0:00:00. Soubor na import je v CSV a obsahuje i jiné sloupce.

Při importu do sloupce (date) se datum automaticky převede na nulu, tedy 0000-00-00
Při importu do sloupce (text) se datum zapíše normálně a při převodu sloupce je zas nulová hodnota.

Lze tedy datum nějak převést, aby mi nevznikla nulová hodnota? Bohužel ani před importem úprava v excelu mi nepomohla. Doufám, že nebudu muset řádek po řádku přepisovat.

Děkuji za případnou pomoc.


Takže jsem nakonec řešení našel.

- odstranění nesmyslného času
- odstranění nadbytečných mezer
- nahrazení teček za pomlčky
- převedení na správný formát datumu z dmY na Ymd
- změna typu sloupce na date.

A je vyhráno.

SQL:
UPDATE `tabulka` SET `datum-narození` = REPLACE(`datum-narození`,'0:00:00','');
UPDATE `tabulka` SET `datum-narození` = REPLACE(`datum-narození`,' ','');
UPDATE `tabulka` SET `datum-narození` = REPLACE(`datum-narození`,'.','-');
UPDATE `tabulka` SET `datum-narození` = STR_TO_DATE(`datum-narození`,'%d-%m-%Y');
ALTER TABLE `tabulka` CHANGE `datum-narození` `datum-narození` DATE;
Kajman
Profil
Jen doplním, že při importu přes load data lze hodnotu z csv dát do proměnné a případně ji použít pro naplnění nějakého sloupce. Něco jako

load data infile 'soubor.csv'
into table `tabulka`
(`sloupec1`,
 `sloupec2`,
 @datum_v_jinem_formatu,
 `sloupec4`)
set
`datum-narození` = str_to_date(@datum_v_jinem_formatu, '%d. %m. %Y %k:%i:%s')

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: