Mysql

在 MySQL 中將 VARCHAR 切換為 DATE

  • December 25, 2016

我繼承了一個數據庫,它有一個真正應該是 DATE 的 VARCHAR 列。表格上沒有檢查(我需要解決這個問題),因此日期不斷輸入為 2016-12-4 而不是 2016-12-04 等等。

我很確定歷史上有很多糟糕的日期,所以我對將數據類型更改為 DATE 有點懷疑,但我很好奇什麼是改變它的好策略?

背景:(我是前端開發人員,不是 DBA,所以雖然我可以使用 SQL,但我不知道我不知道什麼,而且我總是害怕我會犯一個會破壞數據庫)。

用於處理轉換。str_to_date()

str_to_date('2016-12-4', '%Y-%m-%d'); 

SELECT CAST('2016-12-4' AS DATE);–> 2016-12-04,所以你不需要str_to_date.

我會為日期(ALTER TABLE .. ADD COLUMN ..)添加一個新列;UPDATE設置新列。然後手動修復任何真正混亂的值。最後DROP COLUMNRENAME COLUMN;

ORDER BY``VARCHAR包含日期的 a 可能會導致錯誤的答案。(1 月和 11 月可能會混淆。)特定日期的測試可能會失敗。(缺少前導 0。)

並且索引 DATE 列將使某些查詢更快。

引用自:https://dba.stackexchange.com/questions/159069