在TIMESTAMP类型的MySQL列中使用零值

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

The TIMESTAMP data type has a range of ‘1970-01-01 00:00:01’ UTC to ‘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使用二进制零作为幻数?)

那么将语义分配给应用程序中的零时间戳是安全的吗?还是这可能会消失的未记录功能

最佳答案

The date and time types for
representing temporal values are
DATETIME,DATE,TIMESTAMP,TIME,and
YEAR. Each temporal type has a range
of legal values,as well as a “zero”
value that may be used when you
specify an illegal value that MysqL
cannot represent.

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

相关文章

昨天的考试过程中,有个考点的服务器蓝屏重启后发现Mysql启动不了(5.6.45 x32版本,使用innoDB),重装后...
整数类型 标准 SQL 中支持 INTEGER 和 SMALLINT 这两种类型,MySQL 数据库除了支持这两种类型以外,还扩...
一条 SQL 查询语句结构如下: SELECT DISTINCT <select_list> FROM <left_table&...
数据备份 1. 备份数据库 使用 mysqldump 命令可以将数据库中的数据备份成一个文本文件,表的结构和数据...
概述 在实际工作中,在关系数据库(MySQL、PostgreSQL)的单表数据量上亿后,往往会出现查询和分析变慢...
概述 触发器是 MySQL 的数据库对象之一,不需要程序调用或手工启动,而是由事件来触发、激活,从而实现...