【问题标题】:Using zero value in MySQL columns of type TIMESTAMP在 TIMESTAMP 类型的 MySQL 列中使用零值
【发布时间】:2011-03-14 23:11:12
【问题描述】:

我对 MySQL 中 TIMESTAMP 类型的文档以及零值是否可以安全使用感到有些困惑。 manual says

TIMESTAMP 数据类型的范围为 '1970-01-01 00:00:01' UTC 到 '2038-01-19 03:14:07' UTC。 ...

这意味着“0000-00-00 00:00:00”超出范围,因此无效。但是,据我所知,手册实际上并没有这么说。它也没有明确说 '0000-00-00 00:00:00' 一个有效值。

实践表明 '0000-00-00 00:00:00' 有效,manual does say 表明:

CREATE TABLE t (ts TIMESTAMP DEFAULT 0);

是有效的 MySQL SQL。在实践中,它会导致插入“0000-00-00 00:00:00”默认值。

(所有这些都与 '1970-01-01 00:00:00' 超出范围这一奇怪的事实一致,IIRC 不是 uint32 unix 时间的情况。也许 MySQL 使用二进制零作为幻数?)

那么在应用程序中将语义分配给零个 TIMESTAMP 是否安全?或者这是一个可能会消失的未记录功能?

【问题讨论】:

    标签: sql mysql timestamp


    【解决方案1】:

    日期和时间类型 表示时间值是 日期时间、日期、时间戳、时间和 年。每个时间类型都有一个范围 合法价值,以及“零” 可能在您使用时使用的值 指定 MySQL 的非法值 不能代表。

    http://dev.mysql.com/doc/refman/5.1/en/date-and-time-types.html

    【讨论】:

    • 谢谢。我在看错误的部分。对于任何感兴趣的人,它在 5.0 和 5.1 手册中都位于 10.3 的顶部。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-03-02
    • 2019-08-21
    • 1970-01-01
    • 2019-10-03
    • 2019-03-01
    • 2011-02-05
    • 1970-01-01
    相关资源
    最近更新 更多