Мы создаем систему чата для нашего проекта. Когда пользователь создает чат-группу или отправляет сообщение группе, мы должны принимать время события пользователя с помощью milisecond. Ниже приведен пример базы данных.
CREATE TABLE 'chats' (
'id' int(11) NOT NULL,
'chat_id' varchar(50) COLLATE utf8_unicode_ci NOT NULL,
'status' float NOT NULL DEFAULT '1',
'chat_user' varchar(50) COLLATE utf8_unicode_ci NOT NULL,
'user_type' varchar(11) COLLATE utf8_unicode_ci NOT NULL DEFAULT 'users',
'last_seen' datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
'delete_date' datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
'update_date' datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3),
'create_date' timestamp(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
Проблема в том, что когда мы вставляем новые данные в таблицу, mysql принимает текущее время как "0000-00-00 00: 00: 00.000". Все ноль, даже дата. Но если мы отредактируем эти данные после вставки, current_timestamp работает отлично.
Из документации MySQL:
При вставке новой строки значение по умолчанию для столбца с выражением по умолчанию можно вставить либо без имени столбца, либо путем указания столбца как DEFAULT (как и для столбцов с буквальными значениями по умолчанию):
Таким образом, ваши варианты здесь для получения значения по умолчанию для ввода являются либо вставкой, которая не упоминает столбец вообще, либо с использованием заполнитель DEFAULT
. Оба из них должны генерировать тот же результат:
INSERT INTO chats (id, chat_id, status, chat_user, user_type, last_seen, delete_date,
update_date, create_date)
VALUES
(1, 1, 1.0, 'tim', 'admin', DEFAULT, DEFAULT, DEFAULT, DEFAULT);
а также
INSERT INTO chats (id, chat_id, status, chat_user, user_type)
VALUES
(1, 1, 1.0, 'tim', 'admin');
$ timestamp = round (microtime (true) * 1000); введите значение переменной timestamp $ в столбце базы данных. Это временная метка, основанная на utc, и вы можете легко преобразовать ее в локальное время.