有没有什么方法mysql可以在创建时自动将时间戳存储在记录行中。我试图使用current_timestamp作为默认值的时间戳(数据类型),但后来意识到每次更新记录时都会更新。我只需要存储创建时间戳的东西。
由于
答案 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语句运行的时间。假设列可以为空,则NULL
和DEFAULT
或有效值使用默认约束。
答案 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天按时间戳排序;