php mysql метка времени

Я должен отследить дату и время, пользователь был создан в моей mysql базе данных. У меня есть столбец, названный 'созданным' и тип данных как МЕТКА ВРЕМЕНИ.

Проблема - это, когда пользователь изменяет их пароль или другую информацию изменения значения МЕТКИ ВРЕМЕНИ. Как я могу установить это для не изменения????

6
задан user342391 9 June 2010 в 20:19
поделиться

8 ответов

Вы можете просто установить его предложение по умолчанию на CURRENT_TIMESTAMP (как @ Mark и @ dcp , отмеченные в других ответах):

CREATE TABLE your_table (
   ...
   `created_timestamp` TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

Test case:

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)

EDIT:

В моем первоначальном ответе я предложил использовать столбец DATETIME с предложением DEFAULT , установленным на CURRENT_TIMESTAMP . Однако это возможно только при использовании типа данных TIMESTAMP , как указано в документации :

Предложение значения DEFAULT в спецификации типа данных указывает значение по умолчанию значение для столбца. За одним исключением значение по умолчанию должно быть постоянным; это не может быть функцией или выражением. Это означает, например, что вы не можете установить значение по умолчанию для столбца даты как значение функции, такой как NOW () или CURRENT_DATE . Исключением является то, что вы можете указать CURRENT_TIMESTAMP как значение по умолчанию для столбца TIMESTAMP .

5
ответ дан 8 December 2019 в 12:57
поделиться

Похоже, столбец временных меток настроен неправильно:

Ознакомьтесь с руководством :

*

  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
7
ответ дан 8 December 2019 в 12:57
поделиться

При создании таблицы вы должны опустить ON UPDATE

ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP

должно быть

ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP

ссылка

0
ответ дан 8 December 2019 в 12:57
поделиться

Используйте столбец времени. Временная метка автоматически обновляется.

3
ответ дан 8 December 2019 в 12:57
поделиться

Измените его на DEFAULT CURRENT_TIMESTAMP, иначе он будет автообновляться. Из руководства:

В операторе CREATE TABLE первый столбец TIMESTAMP может быть объявлен любым из следующих способов:

С обоими пунктами DEFAULT CURRENT_TIMESTAMP и ON UPDATE CURRENT_TIMESTAMP, столбец имеет текущую временную метку в качестве значения по умолчанию и автоматически обновляется.

Если нет ни DEFAULT, ни ON UPDATE, это то же самое, что и DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP.

При наличии условия DEFAULT CURRENT_TIMESTAMP и отсутствии условия ON UPDATE столбец имеет текущую временную метку в качестве значения по умолчанию, но не обновляется автоматически.

Подчеркивание мое.

3
ответ дан 8 December 2019 в 12:57
поделиться

Сделать DateTime?

0
ответ дан 8 December 2019 в 12:57
поделиться

В разделе атрибутов отключите "on update CURRENT_TIMESTAMP".

0
ответ дан 8 December 2019 в 12:57
поделиться
  • Оставьте формат как есть, но при вставке отформатируйте вставленную строку правильно с помощью date () .
  • Затем необходимо обновить , когда пользователь изменяет свою информацию.
0
ответ дан 8 December 2019 в 12:57
поделиться
Другие вопросы по тегам:

Похожие вопросы: