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.
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())
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.
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)
Oui, vous pouvez utiliser la commande CURRENT_TIMESTAMP()
.
Voir ici: Fonctions date et heure
INSERT INTO servers (server_name, online_status, exchange, disk_space, network_shares)
VALUES('m1','ONLINE','exchange','disk_space','network_shares', NOW())
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 ])
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;
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:
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.