use*_*391 6 php mysql timestamp
我需要跟踪在mysql数据库中创建用户的日期和时间.我有一个名为'created'的列,数据类型为TIMESTAMP.
问题是当用户更改其密码或其他信息时,TIMESTAMP值会发生变化.如何将此设置为不更改????
听起来你没有正确设置timestamp列:
查看指南:
*
Auto-initialization and auto-update:
ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
*
Auto-initialization only:
ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP
*
Auto-update only:
ts TIMESTAMP DEFAULT 0 ON UPDATE CURRENT_TIMESTAMP
*
Neither:
ts TIMESTAMP DEFAULT 0
Run Code Online (Sandbox Code Playgroud)
您可能只想将其默认子句设置为CURRENT_TIMESTAMP(在其他答案中注明@ Mark和@ dcp):
CREATE TABLE your_table (
...
`created_timestamp` TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
Run Code Online (Sandbox Code Playgroud)
测试用例:
CREATE TABLE tb (`a` int, `c` TIMESTAMP DEFAULT CURRENT_TIMESTAMP);
Query OK, 0 rows affected (0.04 sec)
INSERT INTO tb (a) VALUES (1);
Query OK, 1 row affected (0.01 sec)
SELECT * FROM tb;
+------+---------------------+
| a | c |
+------+---------------------+
| 1 | 2010-06-09 23:31:16 |
+------+---------------------+
1 row in set (0.00 sec)
UPDATE tb SET a = 5;
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0
SELECT * FROM tb;
+------+---------------------+
| a | c |
+------+---------------------+
| 5 | 2010-06-09 23:31:16 |
+------+---------------------+
1 row in set (0.00 sec)
Run Code Online (Sandbox Code Playgroud)
编辑:
在我的原始答案中,我建议使用DATETIME一个DEFAULT子句设置为的列CURRENT_TIMESTAMP.但是,只有在使用TIMESTAMP数据类型时才能实现这一点,如文档中所述:
DEFAULT数据类型规范中的value子句指示列的默认值.除了一个例外,默认值必须是常量; 它不能是一个功能或表达.这意味着,例如,您不能将日期列的默认值设置为函数的值,例如NOW()或CURRENT_DATE.例外情况是您可以指定列CURRENT_TIMESTAMP的默认值TIMESTAMP.
| 归档时间: |
|
| 查看次数: |
12602 次 |
| 最近记录: |