MySQl konvertera varchar till datetime

Permalänk
Medlem

MySQl konvertera varchar till datetime

Har en tabell med några kolumner där import av datum krånglar.
Jag fick sätta datatypen till varchar(255) .
Nu skulle jag vilja konvertera dessa till datetime .
'6/2/2018 4:00:00 AM'
'6/2/2018 4:00:00 AM'

Jag har försökt med följande kommando :
update saker set datum = str_to_date(datum, '%d/%m/%Y %h%i%s %P');
har inte riktigt fattat vad jag gör för fel ??
Tänkte sedan ändra datatypen på kolumnen med.
alter table saker change datum datum datetime ;

Visa signatur

K4 Jägare är härliga människor. Varför får inte rika människor bli rikare. Ja till EMU
We live for the one, we die for the one'
(Loggar man inte ut får man en extra rad i sin signatur :-) /VaCUm)

Permalänk
Medlem

Din formattering av datumet är HELT off.
'%e/%c/%Y %l:%i:%s %p' verkar funka.

root@localhost []> select str_to_date('6/2/2018 4:00:00 AM', '%e/%c/%Y %l:%i:%s %p'); +------------------------------------------------------------+ | str_to_date('6/2/2018 4:00:00 AM', '%e/%c/%Y %l:%i:%s %p') | +------------------------------------------------------------+ | 2018-02-06 04:00:00 | +------------------------------------------------------------+

Kolla manualen för mer info https://dev.mysql.com/doc/refman/5.5/en/date-and-time-functio...

Vad jag skulle göra är att lägga till kolumn i tabellen som heter tmp_date som är av typen datetime (eller vad du nu vill ha), sen köra din update till den kolumnen så du inte fuckar upp orginalet. Sen droppa orginalet när allt ser bra ut och renamea tmp_date trill det du vill den ska heta.

Permalänk
Medlem

Följande löste problemet.
ALTER TABLE stuff ADD (datum_new datetime);
UPDATE stuff SET datum_new = STR_TO_DATE(datum, '%e/%c/%Y %l:%i:%s %p');
ALTER TABLE stuff DROP datum;
ALTER TABLE stuff CHANGE COLUMN datum_new datum datetime;

Då datum hade citationstecken i sig, fick följande rad komma med.
UPDATE stuff SET datum_new = STR_TO_DATE(REPLACE(datum,"'",''), '%e/%c/%Y %l:%i:%s %p');

Visa signatur

K4 Jägare är härliga människor. Varför får inte rika människor bli rikare. Ja till EMU
We live for the one, we die for the one'
(Loggar man inte ut får man en extra rad i sin signatur :-) /VaCUm)