Mysql
在 MySQL 中將 VARCHAR 切換為 DATE
我繼承了一個數據庫,它有一個真正應該是 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 COLUMN
和RENAME COLUMN
;
ORDER BY``VARCHAR
包含日期的 a 可能會導致錯誤的答案。(1 月和 11 月可能會混淆。)特定日期的測試可能會失敗。(缺少前導 0。)並且索引 DATE 列將使某些查詢更快。