簡體   English   中英

MySQL 數據庫字段應為日期時間時為 varchar

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM