在mySQL中存储时间戳

med*_*edk 9 php mysql timestamp

我记得我在某处读过mySQL时间戳数据类型用于在行更新时自动更新,这是真的吗?

我是否必须使用timestamp数据类型或bigint存储时间戳?

注意:必须存储的时间戳不是由mySQL生成的,它是一个用PHP生成的预定义值.

谢谢.

Bre*_*len 17

TIMESTAMP可以将类型列设置为使用ON UPDATE CURRENT_TIMESTAMP列定义自动更新.

但是,这不会在插入记录时填充.如您所述,您可以在PHP中构建时间戳(格式:) YYYY-MM-DD HH:MM:SS并插入它,或者您可以DEFAULT CURRENT_TIMESTAMP在列定义中设置另一个列属性.

有关更多信息:MySQL:TIMESTAMP属性

更新: 如果unix timetstamp值是必需的输出,请使用存储值TIMESTAMP,然后使用以下命令获取unix值:

SELECT UNIX_TIMESTAMP(your_column_name) FROM your_table_name
Run Code Online (Sandbox Code Playgroud)

要使用unix时间戳插入,您可以使用 FROM_UNIXTIME()

INSERT INTO (your_table_name) (your_column_name) VALUES (FROM_UNIXTIME(your_bigint_value));
Run Code Online (Sandbox Code Playgroud)


med*_*edk 5

好吧,我认为这已经解决了.

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

零值时间戳看起来像这个'0000-00-00 00:00:00',所以它不能用于存储这样的unix时间戳:1309347278,所以它必须是BIGINT.

谢谢.

  • 实际上,`TIMESTAMP`是使用UNIX时间戳在内部存储的.MySQL函数可用于获取unix值.如果需要自动更新功能,请使用TIMESTAMP并使用`UNIX_TIMESTAMP()查询unix时间戳. (2认同)