it-swarm.com.ru

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

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

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

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

124
Samuel Nicholson

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

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

Используйте 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 именем столбца, который вы хотите использовать для вставки времени.

25
Ankit Sharma

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

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

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 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)

21
Erandi

Да, вы можете использовать команду CURRENT_TIMESTAMP().

Смотрите здесь: Функции даты и времени

4
Alec.
INSERT INTO servers (server_name, online_status, exchange, disk_space, network_shares)
VALUES('m1','ONLINE','exchange','disk_space','network_shares', NOW())
2
Rajesh Chaurasia

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

UNIX_TIMESTAMP() 

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

FROM_ UNIXTIME (unix_timestamp, [format ])
1
tony gil

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

ALTER TABLE servers MODIFY COLUMN network_shares datetime NOT NULL DEFAULT CURRENT_TIMESTAMP;
1
Ferhat KOÇER

Правильный ответ: 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() в subtle:

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

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

date_time datetime NOT NULL DEFAULT SYSDATE()

Если вам нужна текущая дата в формате Epoch , вы можете использовать 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 |
+-------------------------+-------------------------+------------------+

Связанные с:

0
codeforester

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

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

0
obohovyk