Mysql

VARCHAR 或 DATETIME 使用哪個列更好?

  • June 6, 2018

我有一個使用 Date 來選擇日期名稱和編號的腳本,如下所示

2018-06-04 =becomes=> Monday(04, June)
2018-06-04 =or becomes=> Monday(04) // In no need for Month

所以我所做的是使用DATETIME數據類型在表中創建一個列,然後我設置這樣的值

000-06-04 //case1
000-00-04 //case2

這是執行此操作的正確方法嗎,或者如果我使用VARCHAR(18)數據類型並像這樣直接編寫它會更好

Monday(04, June) //case1
Monday(04) //case2

使用DATETIME需要我DATE_FORMAT()以後使用,而使用VARCHAR(18)不需要。

SELECT DATE_FORMAT(date, '%W(%d, %m)') FROM table //case1
SELECT date FROM table //case2

我不在乎易用性,但性能。

如手動DATE類型所述,內部由 3 個字節表示,這對於所需的數據類型而言是最小的。TIMESTAMP在內部表示為BIGINT自紀元以來的秒數(4 個字節),但TIMESTAMP如果伺服器的 TZ 不是 UTC,則始終強制轉換為/從 UTC 轉換。這可能會導致大量成本。DATE與日期相關的功能兼容,比如week()ormonthname()所以它看起來是最好的選擇。

DATE搜尋/排序/加入/組/之間的效率要高得多VARCHAR(18)VARCHAR()甚至不是一個選項。

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