Как узнать текущую дату и время в MySQL?

Есть ли значение или команда типа DATETIME, которую я могу использовать в ручном запросе для вставки текущей даты и времени?

INSERT INTO servers (
  server_name, online_status, exchange, disk_space, network_shares
) VALUES(
  'm1', 'ONLINE', 'ONLINE', '100GB', 'ONLINE' 'DATETIME' 
)

Заданное значение DATETIME в конце - это то, где я хочу добавить текущую дату и время.

Ответ 1

Вы можете использовать NOW():

INSERT INTO servers (server_name, online_status, exchange, disk_space, network_shares, c_time)
VALUES('m1', 'ONLINE', 'exchange', 'disk_space', 'network_shares', NOW())

Ответ 2

Используйте CURRENT_TIMESTAMP() или сейчас()

Как

INSERT INTO servers (server_name, online_status, exchange, disk_space,
network_shares,date_time) VALUES('m1','ONLINE','ONLINE','100GB','ONLINE',now() )

или

INSERT INTO servers (server_name, online_status, exchange, disk_space,
network_shares,date_time) VALUES('m1', 'ONLINE', 'ONLINE', '100GB', 'ONLINE'
,CURRENT_TIMESTAMP() )

Замените date_time именем столбца, которое вы хотите использовать, чтобы вставить время.

Ответ 3

Несмотря на то, что есть много принятых ответов, я думаю, что этот способ также возможен:

Создайте свою таблицу серверов следующим образом :

CREATE TABLE 'servers'
(
      id int(11) NOT NULL PRIMARY KEY auto_increment,
      server_name varchar(45) NOT NULL,
      online_status varchar(45) NOT NULL,
      _exchange varchar(45) NOT NULL, 
      disk_space varchar(45) NOT NULL,
      network_shares varchar(45) NOT NULL,
      date_time datetime NOT NULL DEFAULT CURRENT_TIMESTAMP
);

И ваше выражение INSERT должно быть :

INSERT INTO servers (server_name, online_status, _exchange, disk_space, network_shares)
VALUES('m1', 'ONLINE', 'ONLINE', '100GB', 'ONLINE');

Моя среда:

Core i3 Windows Laptop с 4 ГБ оперативной памяти, и я сделал приведенный выше пример на MySQL Workbench 6.2 (Версия 6.2.5.0 Build 397 64 Bits)

Ответ 5

INSERT INTO servers (server_name, online_status, exchange, disk_space, network_shares)
VALUES('m1','ONLINE','exchange','disk_space','network_shares', NOW())

Ответ 6

В дизайне базы данных я настоятельно рекомендую использовать Unixtime для обеспечения согласованности и индексирования/поиска/сравнения.

UNIX_TIMESTAMP() 

Можно всегда конвертировать в человеко-читаемые форматы впоследствии, интернационализировать, как индивидуально наиболее удобно.

FROM_ UNIXTIME (unix_timestamp, [format ])

Ответ 7

Если вы измените значение по умолчанию на CURRENT_TIMESTAMP, это будет более эффективным,

ALTER TABLE servers MODIFY COLUMN network_shares datetime NOT NULL DEFAULT CURRENT_TIMESTAMP;

Ответ 8

Вы можете использовать не только now(), но и current_timestamp() и localtimestamp(). Основной причиной неправильной временной отметки отображения является вставка NOW() с одинарными кавычками! Это не сработало для меня в MySQL Workbench из-за того, что эта среда IDE добавляет одинарные кавычки для функций mysql, и я не сразу ее распознал)

Не используйте функции с одинарными кавычками, например, в MySQL Workbench. Это не работает.

Ответ 9

Правильный ответ SYSDATE().

INSERT INTO servers (
    server_name, online_status, exchange, disk_space,
    network_shares, date_time
)
VALUES (
    'm1', 'ONLINE', 'ONLINE', '100GB', 'ONLINE', SYSDATE()
);

Мы можем изменить это поведение и заставить MySQL заставить NOW() вести себя так же, как SYSDATE(), установив аргумент командной строки sysdate_is_now в True.

Обратите внимание, что NOW() (который имеет CURRENT_TIMESTAMP() в качестве псевдонима), отличается от SYSDATE() тонким способом:

SYSDATE() возвращает время выполнения. Это отличается от поведения для NOW(), которая возвращает постоянное время, которое указывает время, когда оператор начал выполняться. (Внутри сохраненной функции или триггера NOW() возвращает время, когда функция или оператор запуска начал выполняться.)

Как указывает Erandi, лучше создать свою таблицу с предложением DEFAULT, чтобы столбец автоматически заполнялся меткой времени при вставке новой строки:

date_time datetime NOT NULL DEFAULT SYSDATE()

Если вы хотите текущую дату в формате эпох, тогда вы можете использовать UNIX_TIMESTAMP(). Например:

select now(3), sysdate(3), unix_timestamp();

даст

+-------------------------+-------------------------+------------------+
| now(3)                  | sysdate(3)              | unix_timestamp() |
+-------------------------+-------------------------+------------------+
| 2018-11-27 01:40:08.160 | 2018-11-27 01:40:08.160 |       1543282808 |
+-------------------------+-------------------------+------------------+

Связанные с:

Ответ 10

$rs = $db->Insert('register',"'$fn','$ln','$email','$pass','$city','$mo','$fil'","'f_name','l_name=','email','password','city','contact','image'");