Kiedy byłem yound i głupi miał niewielki doświadczeniem, postanowiłam, że będzie to dobry pomysł, aby wygenerować znaczniki czasu w PHP i przechowywać je w INT
kolumny w moim MySQL InnoDB tabeli. Teraz, gdy ta tabela ma miliony rekordów i potrzebuje zapytań opartych na datach, nadszedł czas, aby przekonwertować tę kolumnę na TIMESTAMP
. Jak mam to zrobic?Konwersja kolumnę mysql z INT do TIMESTAMP
currenlty moja tabela wygląda następująco:
id (INT) | message (TEXT) | date_sent (INT)
---------------------------------------------
1 | hello? | 1328287526
2 | how are you? | 1328287456
3 | shut up | 1328234234
4 | ok | 1328678978
5 | are you... | 1328345324
Oto pytania wymyśliłem, aby przekształcić date_sent
kolumna TIMESTAMP
:
-- creating new column of TIMESTAMP type
ALTER TABLE `pm`
ADD COLUMN `date_sent2` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP();
-- assigning value from old INT column to it, in hope that it will be recognized as timestamp
UPDATE `pm` SET `date_sent2` = `date_sent`;
-- dropping the old INT column
ALTER TABLE `pm` DROP COLUMN `date_sent`;
-- changing the name of the column
ALTER TABLE `pm` CHANGE `date_sent2` `date_sent` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP();
Wszystko wydaje się poprawna do mnie, ale kiedy nadchodzi czas, aby uzyskać UPDATE
pm date_sent2 =
date_sent ;
, Otrzymuję ostrzeżenie, a wartość znacznika czasu pozostaje pusta:
Co robię źle i czy istnieje sposób, aby to naprawić?
Dziękuję. Działa świetnie! –