2013-10-08 2 views
87

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

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

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

+0

http://dev.mysql.com/doc/refman/5.5/en/date-and -time-functions.html – Colandus

+6

MAINTENANT(), voir https://dev.mysql.com/doc/refman/5.5/fr/date-and-time-functions.html#function_now ... Et s'il vous plaît, la prochaine fois mis Au moins un effort de recherche dans votre question, cela peut facilement être googlé (donc je viens de downvoted cette question) – dirkk

+0

Ma question était plus axée sur la façon dont je devrais l'utiliser dans la syntaxe que j'ai posté ci-dessus. –

Répondre

163

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()) 
+0

# 1054 - Colonne inconnue «timbre» dans «liste des champs» - Y a-t-il quelque chose qui me manque? –

+34

Il suffit de remplacer le tampon par le nom de votre champ, vraiment. Ne faites pas que copier et coller. –

+4

S'il s'agit d'un type de champ "date", vous pouvez également utiliser curdate() ' – tandy

19

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.

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

Vous devriez expliquer brièvement votre réponse. –

+0

Cette réponse signifie très peu en effet! –

0

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

N'utilisez pas de guillemets simples comme dans MySQL Workbench. Ça ne marche pas.

13

Même si il y a beaucoup de réponses acceptées, je pense que cette façon est également possible:

Créez votre table 'serveurs' 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 votre INSERT déclaration devrait être :

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

Mon environnement:

Core i3 de Windows pour ordinateur portable avec 4 Go de RAM, et je l'ai fait l'exemple ci-dessus sur MySQL Workbench 6.2 (version 6.2.5.0 Construisons 397 64 bits)

1

Dans la conception de base de données, recommande iIhighly utiliser Unixtime pour la cohérence et les performances d'indexation/recherche/comparaison.

UNIX_TIMESTAMP() 

On peut toujours convert to human readable formats par la suite, comme cela est en train d'internationaliser individuellement le plus pratique.

FROM_ UNIXTIME (unix_timestamp, [format ]) 
1
INSERT INTO servers (server_name, online_status, exchange, disk_space, network_shares) 
VALUES('m1','ONLINE','exchange','disk_space','network_shares', NOW()) 
1

iF vous faire changer la valeur par défaut pour CURRENT_TIMESTAMP il est plus effiency,

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