[英]Error when trying to insert inside a DateTime field in database mysql
[英]MySQL database field is varchar when it should be datetime
我已經接管了一個網站,原始開發人員將日期存儲為數據庫中的 varchar 而不是 datetime。 出生日期等日期字段有多種格式,例如 dd/mm/yyyy、mm/dd/yyyy、mmddyyyy 等。
我想將此字段遷移到正確的數據類型,但有數百行。 遷移該領域的最佳方法是什么? php 代碼很可能也需要更新。
感謝您的反饋意見。
遷移該領域的最佳方法是什么?
可能的方式:
步驟 1. 添加將字符串值日期轉換為 DATE 數據類型的生成列:
ALTER TABLE tablename
ADD COLUMN dSomeDate DATE AS (STR_TO_DATE(SomeDate, {converting pattern})) STORED;
步驟 2. 查找從舊列中選擇的所有查詢(包括函數、過程、觸發器、事件等中的查詢),將它們重寫為新列用法並應用。
步驟 3. 找到所有修改查詢並標記它們,將它們重寫為新列使用,但不應用。
步驟 4. 停止系統。 進行完整的備份並確保它是一致的。
步驟 5. 更改表,刪除生成的列,但添加常規列。 根據 UPDATE 用轉換后的值填充它。 刪除舊列。
步驟 6. 應用所有重寫的數據修改代碼。
步驟 7. 啟動系統並確保一切正常。
對要更改的每一列重復此過程。 當然,您可以同時將此方法應用於許多列(或所有列),但這會增加由於未考慮某些內容而導致問題的可能性。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.