MySQL отметка времени / дата по умолчанию - PullRequest
0 голосов
/ 03 марта 2019

У меня есть таблица "клиент" в MySQL.Я хочу установить дату по умолчанию, но, как я заметил, это невозможно с "DEFAULT CURDATE ()".Некоторые люди говорят, что это возможно, изменив тип данных с last_seen на отметку времени.Но возможно ли просто установить "% d-% m-% Y" или "% Y-% m-% d" как defautlt, потому что с меткой времени я также получаю минуты, часы и минуты.

CREATE TABLE IF NOT EXISTS client
(
  pk_macaddr       VARCHAR(17) PRIMARY KEY NOT NULL,
  ipaddress         VARCHAR(15) NOT NULL ,
  hostname         VARCHAR(50) UNIQUE NOT NULL ,
  fk_pk_roomnumber INTEGER NOT NULL ,
  last_seen        DATE ,
  is_online        BOOLEAN default false
);

1 Ответ

0 голосов
/ 03 марта 2019

Только типы данных TIMESTAMP и DATETIME поддерживают автоматическую инициализацию и обновление (см. руководство ), в этом случае вы можете объявить last_seen, например, как

last_seen TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP

Чтобы обойти тот факт, что вам нужно только свидание, у вас есть несколько вариантов.Вы можете добавить сгенерированный столбец к вашей таблице (и использовать его в SELECT вместо last_seen):

ALTER TABLE client ADD last_seen_date AS (DATE(last_seen))

Или вы можете создать VIEW:

CREATE VIEW client_view AS
SELECT pk_macaddr, ipaddress, hostname, fk_pk_roomnumber, DATE(last_seen) AS last_seen, is_online
FROM client
...