web-dev-qa-db-fra.com

Comment obtenir la date et l'heure actuelles dans MySQL?

Existe-t-il une valeur ou une commande telle que DATETIME que je puisse utiliser dans une requête manuelle pour insérer la date et l'heure actuelles? 

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

La valeur DATETIME indiquée à la fin est l'endroit où je veux ajouter la date et l'heure actuelles.

124
Samuel Nicholson

Vous pouvez utiliser 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

Utilisez CURRENT_TIMESTAMP () ou maintenant ()

Comme

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

ou 

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

Remplacez date_time par le nom de colonne que vous souhaitez utiliser pour insérer l'heure.

25
Ankit Sharma

Même s'il existe de nombreuses réponses acceptées, je pense que cette façon de procéder est également possible:

Créez votre 'serveurs' table comme suit:

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

Et votreINSERTstatement devrait être:

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

Mon environnement:

Ordinateur portable Windows Core i3 avec 4 Go de RAM, et j'ai suivi l'exemple ci-dessus sur MySQL Workbench 6.2 (Version 6.2.5.0 Build 397 64 bits)

21
Erandi

Oui, vous pouvez utiliser la commande CURRENT_TIMESTAMP().

Voir ici: Fonctions date et heure

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

Dans la conception de la base de données, il est vivement recommandé d'utiliser Unixtime pour assurer la cohérence et les performances d'indexation/recherche/comparaison. 

UNIX_TIMESTAMP() 

On peut toujours convertir en formats lisibles par l'homme par la suite, en l'internationalisant individuellement.

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

Si vous définissez la valeur par défaut sur CURRENT_TIMESTAMP, il est plus efficace,

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

La réponse correcte est SYSDATE () .

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

Nous pouvons modifier ce comportement et rendre MySQL obliger NOW() à se comporter de la même manière que SYSDATE() en définissant sysdate_is_now argument de ligne de commande sur True.

Notez que NOW() (qui a CURRENT_TIMESTAMP() comme alias), diffère de SYSDATE() de manière subtile:

SYSDATE () renvoie l'heure à laquelle il s'exécute. Ceci diffère du comportement pour NOW (), qui renvoie une heure constante indiquant le heure à laquelle la déclaration a commencé à être exécutée. (Dans une fonction ou un déclencheur Stocké, NOW () renvoie l'heure à laquelle la fonction ou l'instruction déclenchant a commencé à s'exécuter.)

Comme indiqué par Erandi , il est préférable de créer votre table avec la clause DEFAULT afin que la colonne soit automatiquement renseignée avec l'horodatage lorsque vous insérez une nouvelle ligne:

date_time datetime NOT NULL DEFAULT SYSDATE()

Si vous voulez que la date actuelle soit dans Epoch format, vous pouvez utiliser UNIX_TIMESTAMP () . Par exemple:

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

donnerait

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

En relation:

0
codeforester

Vous pouvez utiliser non seulement now(), mais aussi current_timestamp() et localtimestamp(). La raison principale d'un horodatage d'affichage incorrect est l'insertion de NOW () avec des guillemets simples ! Cela n'a pas fonctionné pour moi dans MySQL Workbench à cause de cette IDE ajouter des guillemets simples pour les fonctions mysql et je ne l'ai pas reconnu immédiatement)

N'utilisez pas les fonctions avec des guillemets simples comme dans MySQL Workbench. Ça ne marche pas.

0
obohovyk