Mysql

在 MySQL 中處理 1000 AD 之前日期的最佳方法?

  • February 23, 2017

我正在為公元 1000 年之前的記錄創建數據庫,但 MySQL 日期和日期時間欄位僅支持從 1000 年開始的日期。

有沒有比使用 Unix 時間戳使用 bigint 類型來計算 1/1/1970 之前/之後的秒數或切換到支持更大日期範圍的數據庫軟體更方便的方法?

另一種方法是將日期的每個部分儲存在數字欄位中。因此,您將擁有三個欄位:

year  SMALLINT     # Store positive values for AD and negative for BC years.
month TINYINT
day   TINYINT

這樣它仍然是人類可讀的。MySQL 中不同數字數據類型的值範圍可在Overview of Numeric Types中找到。儲存要求可在數據類型儲存要求中找到。

對於需要非常舊(以及某些甚至遙遠的未來)日期的應用程序,沒有原生 RDBMS 日期數據類型。

如果我是你,我會為本地儲存使用字元串類型,並堅持使用具有位置意義的格式,例如:+YYYY-MM-DD 以適應 BC/AD 和任何可預見的歷史或合理的未來日期。

如果它可能有幫助,您可以建構一個庫類,將您的內部儲存格式轉換為 UI 層更美觀的格式。如果您選擇的語言支持數據庫中的日期,您甚至可以包含轉換為本機日期類型的庫函式。

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