MySQL:表示大于 9999 的年份

Bhe*_*nga 5 mysql

根据 MySQL 参考手册,如果我理解正确,年份类型最多限制为 9999。(参见http://dev.mysql.com/doc/refman/5.7/en/year.html)。

那么你如何存储大的未来或过去的日期?例如 6000BC 或什么让我问,21974AD?我试图找到使用更大日期的例子,但一直无法并且想知道是否有可能这样做。

(这方面的小背景,正在测试一些 Java 日期时间验证,并发现尝试将 21974 年的记录插入到数据库中,由于前面提到的限制导致异常)

joa*_*olo 5

如果您只需要使用Years ,则可以使用大小足以满足您的需求的任何整数(即: from smallintto biginttinyint太小)或numeric/ decimal)类型来表示它们。

如果您确实需要涉及 > 9999 年的日期计算,那么您就不走运了。关于日期的 MySQL 文档明确指出

DATE 类型用于包含日期部分但不包含时间部分的值。MySQL 以“YYYY-MM-DD”格式检索并显示 DATE 值。支持的范围是“1000-01-01”到“9999-12-31”。

如果您对日期范围的需求确实很关键,并且您可以选择数据库,则PostgreSQL允许更大的范围(日期为公元前 4713 年到公元 5874897 年,时间戳为公元前 4713 年到公元 294276 年)。

其他数据库(例如FirebirdOracleMS SQL Server)的日期可能值与 mySQL 类似。