mysql自动存储记录创建时间戳

时间:2011-02-02 03:35:52

标签: sql mysql

有没有什么方法mysql可以在创建时自动将时间戳存储在记录行中。我试图使用current_timestamp作为默认值的时间戳(数据类型),但后来意识到每次更新记录时都会更新。我只需要存储创建时间戳的东西。

由于

6 个答案:

答案 0 :(得分:63)

设置DEFAULT constraint to use CURRENT_TIMESTAMP

CREATE TABLE ...
  your_date_column DATETIME DEFAULT CURRENT_TIMESTAMP
  ...

对于现有表格,请使用ALTER TABLE statement

ALTER TABLE your_table
ALTER COLUMN date_column SET DEFAULT CURRENT_TIMESTAMP

除非您为date_column指定值,否则默认值为日期& INSERT语句运行的时间。假设列可以为空,则NULLDEFAULT或有效值使用默认约束。

答案 1 :(得分:3)

您可以在https://dev.mysql.com/doc/refman/5.0/en/timestamp-initialization.html获取MySQL中时间戳的完整详细信息。

您关心的一点是,如果您将timestamp列定义为DEFAULT CURRENT_TIMESTAMP子句并且没有ON UPDATE子句,则该列具有其默认值的当前时间戳,但不会自动更新。

但请注意。要做的显而易见的事情是拥有两个时间戳列,一个是创建时间,另一个是最后一次更新时间。不幸的是,这是一个记录在案的MySQL限制,MySQL不支持这一点。我不知道为什么MySQL有这么奇怪的限制 - 没有其他主要数据库有这个常见用例的问题。

答案 2 :(得分:1)

FYI =“日期时间”是固定的日期和时间。 “时间戳”是可变的日期和时间 - 系统时间。

所以,有两列。一个创建Col,一个更新Col.

答案 3 :(得分:0)

以下命令将创建一个hello表
1. id整数
2. create_at与当前时间。

create table hello (id int, created_at datetime DEFAULT CURRENT_TIMESTAMP);

答案 4 :(得分:0)

Create Table myTableName
     (
       userId int primary key
       userJoiningDate TIMESTAMP DEFAULT CURRENT_TIMESTAMP
     );

https://www.mysqltutorial.org/mysql-timestamp.aspx

以下是创建列的方法,该列在创建时记录时间戳。如果您想知道如何在每次更改/更新该行时更新时间戳,请查看上面的链接。

答案 5 :(得分:-2)

SELECT * FROM test WHERE timestamp> = CURDATE()AND timestamp< CURDATE()+ INTERVAL 1天按时间戳排序;