Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php mysql时间戳_Php_Mysql_Timestamp - Fatal编程技术网

php mysql时间戳

php mysql时间戳,php,mysql,timestamp,Php,Mysql,Timestamp,我需要跟踪在mysql数据库中创建用户的日期和时间。我有一个名为“created”的列,数据类型为TIMESTAMP 问题是,当用户更改其密码或其他信息时,时间戳值会更改。如何将其设置为不更改???使用日期时间列。时间戳自动更新。您只需将其默认子句设置为当前时间戳(如其他答案中的@和@): 测试用例: CREATE TABLE tb (`a` int, `c` TIMESTAMP DEFAULT CURRENT_TIMESTAMP); Query OK, 0 rows affected (0.0

我需要跟踪在mysql数据库中创建用户的日期和时间。我有一个名为“created”的列,数据类型为TIMESTAMP


问题是,当用户更改其密码或其他信息时,时间戳值会更改。如何将其设置为不更改???

使用日期时间列。时间戳自动更新。

您只需将其默认子句设置为
当前时间戳
(如其他答案中的@和@):

测试用例:

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)

编辑:

在我最初的回答中,我建议使用
DATETIME
列,并将
DEFAULT
子句设置为
CURRENT\u TIMESTAMP
。但是,这只有在使用
时间戳
数据类型时才可能,如下所示:

数据类型规范中的
DEFAULT
value子句指示列的默认值。除了一个例外,默认值必须是常量;它不能是函数或表达式。例如,这意味着您不能将日期列的默认值设置为函数的值,例如
NOW()
CURRENT\u date
。例外情况是,您可以指定
当前时间戳
作为
时间戳
列的默认值


让它成为约会时间?

  • 保持格式不变,但插入时请使用
    date()
    正确格式化插入的字符串
  • 然后,当用户更改其信息时,需要
    更新

听起来好像没有正确设置时间戳列:

请查看:


创建表时,应忽略更新时的

ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
应该是

ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP

在“属性”下,禁用“更新当前时间戳”。

将其更改为
默认当前时间戳
,否则它将自动更新。从:

在CREATE TABLE语句中,第一个TIMESTAMP列可以通过以下任一方式声明:

使用默认的CURRENT_TIMESTAMP和ON UPDATE CURRENT_TIMESTAMP子句,列的默认值具有当前时间戳,并且会自动更新

既没有DEFAULT子句,也没有ON UPDATE子句,它与UPDATE CURRENT\u TIMESTAMP上的DEFAULT CURRENT\u TIMESTAMP相同。

使用默认的CURRENT_TIMESTAMP子句和no ON UPDATE子句,列的默认值具有当前时间戳,但不会自动更新


强调我的。

在您的情况下,这有点脏,但您可以通过执行以下操作暂时禁用自动更新:

UPDATE woot SET password=<value_to_set>, timestamp_colum_name=timestamp_colum_name;
UPDATE woot SET password=,timestamp\u column\u name=timestamp\u column\u name;
(在那里找到的:)

ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP
UPDATE woot SET password=<value_to_set>, timestamp_colum_name=timestamp_colum_name;