如何將帶TIMESTAMP的列轉換爲DATETIME並保留日期?我正在使用PHPMyAdmin。TIMESTAMP到DATETIME轉換?
此外,時間戳可以選擇自動填充,有沒有辦法在DATETIME這樣做?或者我應該每次使用PHP插入它?
感謝
如何將帶TIMESTAMP的列轉換爲DATETIME並保留日期?我正在使用PHPMyAdmin。TIMESTAMP到DATETIME轉換?
此外,時間戳可以選擇自動填充,有沒有辦法在DATETIME這樣做?或者我應該每次使用PHP插入它?
感謝
如果該查詢
ALTER TABLE table CHANGE `time` `time` datetime
會丟失日期,您可以創建新列,然後分配舊值然後刪除舊列並重命名新的列
ALTER TABLE table ADD `datetime` datetime AFTER `time`;
UPDATE table set datetime=time;
ALTER TABLE table DROP datetime;
ALTER TABLE CHANGE `datetime` `time` datetime
Read this:
這意味着,例如,可以不設置默認日期列是一個函數的值,例如NOW()或CURRENT_DATE。
使用FROM_UNIXTIME()
從UNIX時間戳轉換爲常規datetime值。
unix時間戳在mysql中沒有本地類型 - 它只是一個整數。 timestamp
字段將自動填充,但僅限於任何給定表中的第一個字段。關於那個here的更多細節。
嗯,好點,'TIMESTAMP'列類型,或'TIMESTAMP' unix-timestamp ... – Wrikken
ALTER TABLE tablename MODIFY COLUMN columnname DATETIME;
(上一個測試表第一次測試...)
沒有辦法設置默認爲當前時間保存觸發器:
DELIMITER $
CREATE TRIGGER tablename_before_insert BEFORE INSERT ON tablename
FOR EACH ROW
BEGIN
IF NEW.columnname IS NULL THEN
SET NEW.columnname = NOW();
END IF;
IF NEW.datum = '0000-00-00 00:00:00' THEN
SET NEW.columnname = NOW();
END IF;
END$
DELIMITER ;
TIMESTAMP是列式還是TIMESTAMP是unix時間戳? – Wrikken
請注意,TIMESTAMP(MySQ:datatype)存儲在GMT中,並轉換爲當前會話時區進行演示。 DATETIME按原樣存儲,因此在時區以外的時區中從TIMESTAMP轉換爲DATETIME可能會導致時間偏移。 – Mchl