Php MySQL中各种日期/时间字段类型的优缺点是什么?
MySQL中的日期和时间可以存储为DATETIME、TIMESTAMP和INTEGER(自1970年1月1日起的秒数)。每种方法的优点和缺点是什么,特别是在灯堆下开发时?我想以下内容有助于澄清 日期和时间可以存储在mysql的DATETIME字段中 如果您希望在创建行时添加时间戳,则使用时间戳-该字段将在创建时自动填充 对日期使用整数有点过分,因为DATETIME基本上就是这样做的,但它会为您完成所有耗时的转换Php MySQL中各种日期/时间字段类型的优缺点是什么?,php,mysql,datetime,timestamp,lamp,Php,Mysql,Datetime,Timestamp,Lamp,MySQL中的日期和时间可以存储为DATETIME、TIMESTAMP和INTEGER(自1970年1月1日起的秒数)。每种方法的优点和缺点是什么,特别是在灯堆下开发时?我想以下内容有助于澄清 日期和时间可以存储在mysql的DATETIME字段中 如果您希望在创建行时添加时间戳,则使用时间戳-该字段将在创建时自动填充 对日期使用整数有点过分,因为DATETIME基本上就是这样做的,但它会为您完成所有耗时的转换 您是否有兴趣了解mysql中的特定优点或缺点?mysql中的时间戳可能非常棘手。如果
您是否有兴趣了解mysql中的特定优点或缺点?mysql中的时间戳可能非常棘手。如果不小心声明,您可能会得到在每次行更新时自动更改其值的字段(即使您没有显式更新它)
我会使用MySQL中的DATETIME或DATE字段保存数据。至少,如果要存储2038年之前的日期值,请执行以下操作:。如果您所在的系统以不同的方式存储整数,则可能不会出现此问题 比较日期值甚至时间戳仍然很容易
SELECT * FROM myTable WHERE startDate > '2009-01-01'
SELECT * FROM myTable WHERE UNIX_TIMESTAMP(startDate) > 1232541482
如果需要时间戳的毫秒保真度,则需要将其保存为整数。不过要小心,这会使事情复杂化。
- 时间戳存储在MySQL专有方法中(虽然它基本上只是一个由年、月、日、小时、分钟和秒组成的字符串),此外,每当插入或更改记录时,时间戳类型的字段会自动更新,并且不会给出显式字段值:
mysql> create table timestamp_test( id integer not null auto_increment primary key, val varchar(100) not null default '', ts timestamp not null); Query OK, 0 rows affected (0.00 sec) mysql> insert into timestamp_test (val) values ('foobar'); Query OK, 1 row affected (0.00 sec) mysql> select * from timestamp_test; +----+--------+----------------+ | id | val | ts | +----+--------+----------------+ | 1 | foobar | 20090122174108 | +----+--------+----------------+ 1 row in set (0.00 sec) mysql> update timestamp_test set val = 'foo bar' where id = 1; Query OK, 1 row affected (0.00 sec) Rows matched: 1 Changed: 1 Warnings: 0 mysql> select * from timestamp_test; +----+---------+----------------+ | id | val | ts | +----+---------+----------------+ | 1 | foo bar | 20090122174123 | +----+---------+----------------+ 1 row in set (0.00 sec) mysql>
- DATETIME是日期和时间的标准数据类型,与MySQL中的日期和时间函数配合使用。我可能会在实践中使用这个
- 不建议以整数格式存储日期,因为由于时区、闰年等有趣的问题,您正在打开一个真正的蠕虫罐头-至少如果您打算根据存储在该字段中的特定日期查询数据库