2013-10-08 32 views
87

Esiste un valore o un comando come DATETIME che posso utilizzare in una query manuale per inserire la data e l'ora correnti?MySQL - inserire la data/ora corrente?

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

Il valore datetime citato alla fine è dove voglio aggiungere la data e l'ora correnti.

+0

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

+6

NOW(), vedere https://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_now ... E per favore, la prossima volta mettere almeno qualche sforzo di ricerca nella tua domanda, questo può essere facilmente cercato su google (quindi ho appena messo in discussione questa domanda) – dirkk

+0

La mia domanda era più mirata su come dovrei usarla la sintassi che ho postato sopra. –

risposta

163

È possibile utilizzare 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 - Colonna 'timbro' sconosciuta in 'lista campi' - C'è qualcosa che mi manca? –

+34

Sostituisci il timbro con qualunque sia il nome del tuo campo, davvero. Non copiare e incollare –

+4

Se è un campo "data", puoi anche usare 'curdate()' – tandy

19

Usa CURRENT_TIMESTAMP() o ora()

Come

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

o

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

Sostituisci date_time con il nome della colonna che desideri utilizzare per inserire l'ora.

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

Dovresti spiegare brevemente la tua risposta. –

+0

Questa risposta significa davvero poco! –

0

È possibile utilizzare non solo now(), anche current_timestamp() e localtimestamp(). Il motivo principale della visualizzazione di data/ora non corretta è l'inserimento di NOW() con virgolette singole! Non ha funzionato per me in MySQL Workbench perché questo IDE aggiunge virgolette singole per funzioni mysql e non l'ho riconosciuto subito)

Non utilizzare le funzioni con apici singoli come in MySQL Workbench. Non funziona.

13

Anche se ci sono molte risposte accettate, credo che in questo modo è anche possibile:

Creare la tavolo 'server' come segue :

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

E il tuo INSERT dichiarazione dovrebbe essere :

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

mio ambiente:

Core i3 di Windows del computer portatile con 4 GB di RAM, e ho fatto l'esempio di cui sopra su MySQL Workbench 6.2 (versione 6.2.5.0 Costruire 397 64 bit)

1

Nella progettazione di database, raccomandare iIhighly usando Unixtime per coerenza e indicizzazione/ricerca/confronto delle prestazioni.

UNIX_TIMESTAMP() 

si può sempre convert to human readable formati dopo, internazionalizzazione come è individualmente più conveniente.

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

se si effettua valore predefinito modifica CURRENT_TIMESTAMP è più effiency,

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