Gibt es einen Wert oder Befehl wie DATETIME, den ich in einer manuellen Abfrage verwenden kann, um das aktuelle Datum und die aktuelle Uhrzeit einzufügen?
INSERT INTO servers (
server_name, online_status, exchange, disk_space, network_shares
) VALUES(
'm1', 'ONLINE', 'ONLINE', '100GB', 'ONLINE' 'DATETIME'
)
Der angegebene DATETIME-Wert am Ende ist der Ort, an dem ich das aktuelle Datum und die aktuelle Uhrzeit hinzufügen möchte.
Sie können NOW()
verwenden:
INSERT INTO servers (server_name, online_status, exchange, disk_space, network_shares, c_time)
VALUES('m1', 'ONLINE', 'exchange', 'disk_space', 'network_shares', NOW())
Verwenden Sie CURRENT_TIMESTAMP () oder now ()
Mögen
INSERT INTO servers (server_name, online_status, exchange, disk_space,
network_shares,date_time) VALUES('m1','ONLINE','ONLINE','100GB','ONLINE',now() )
oder
INSERT INTO servers (server_name, online_status, exchange, disk_space,
network_shares,date_time) VALUES('m1', 'ONLINE', 'ONLINE', '100GB', 'ONLINE'
,CURRENT_TIMESTAMP() )
Ersetzen Sie date_time durch den Spaltennamen, den Sie zum Einfügen der Zeit verwenden möchten.
Obwohl es viele akzeptierte Antworten gibt, denke ich, dass dieser Weg auch möglich ist:
Erstellen Sie Ihre "Server" Tabelle wie folgt:
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
);
Und IhreEINFÜGUNGAnweisung sollte sein:
INSERT INTO servers (server_name, online_status, _exchange, disk_space, network_shares)
VALUES('m1', 'ONLINE', 'ONLINE', '100GB', 'ONLINE');
Meine Umgebung:
Core i3 Windows Laptop mit 4 GB RAM, und ich habe das obige Beispiel für MySQL Workbench 6.2 (Version 6.2.5.0 Build 397 64 Bits) ausgeführt.
Ja, Sie können den Befehl CURRENT_TIMESTAMP()
verwenden.
Siehe hier: Datums- und Uhrzeitfunktionen
INSERT INTO servers (server_name, online_status, exchange, disk_space, network_shares)
VALUES('m1','ONLINE','exchange','disk_space','network_shares', NOW())
Beim Datenbank-Design wird dringend empfohlen, Unixtime für Konsistenz und Indexierungs-/Such-/Vergleichsleistung zu verwenden.
UNIX_TIMESTAMP()
Man kann immer in menschenlesbare Formate konvertieren, wobei die Internationalisierung so individuell ist, wie es am bequemsten ist.
FROM_ UNIXTIME (unix_timestamp, [format ])
Wenn Sie den Standardwert in CURRENT_TIMESTAMP
ändern, ist dies effizienter.
ALTER TABLE servers MODIFY COLUMN network_shares datetime NOT NULL DEFAULT CURRENT_TIMESTAMP;
Die richtige Antwort lautet SYSDATE () .
INSERT INTO servers (
server_name, online_status, exchange, disk_space,
network_shares, date_time
)
VALUES (
'm1', 'ONLINE', 'ONLINE', '100GB', 'ONLINE', SYSDATE()
);
Wir können dieses Verhalten ändern und MySQL dazu bringen, dass NOW()
sich genauso verhält wie SYSDATE()
, indem Sie sysdate_is_now Befehlszeilenargument auf True
setzen.
Beachten Sie, dass NOW()
(das CURRENT_TIMESTAMP()
als Aliasname hat) sich in subtiler Weise von SYSDATE()
unterscheidet:
SYSDATE () gibt den Zeitpunkt zurück, zu dem es ausgeführt wird. Dies unterscheidet sich von der Verhalten für NOW (), das eine konstante Zeit zurückgibt, die auf .__ verweist. Zeitpunkt, zu dem die Anweisung ausgeführt wurde. (Innerhalb einer gespeicherten Funktion oder eines ausgelösten Auslösers gibt NOW () den Zeitpunkt zurück, zu dem die Funktion oder die auslösende Anweisung _ gestartet wurde.)
Wie durch Erandi angegeben, ist es am besten, Ihre Tabelle mit der DEFAULT
-Klausel zu erstellen, damit die Spalte beim Einfügen einer neuen Zeile automatisch mit dem Zeitstempel gefüllt wird:
date_time datetime NOT NULL DEFAULT SYSDATE()
Wenn Sie das aktuelle Datum im Epoch Format haben möchten, können Sie UNIX_TIMESTAMP () verwenden. Zum Beispiel:
select now(3), sysdate(3), unix_timestamp();
ergäbe
+-------------------------+-------------------------+------------------+
| now(3) | sysdate(3) | unix_timestamp() |
+-------------------------+-------------------------+------------------+
| 2018-11-27 01:40:08.160 | 2018-11-27 01:40:08.160 | 1543282808 |
+-------------------------+-------------------------+------------------+
Verbunden:
Sie können nicht nur now()
, sondern auch current_timestamp()
und localtimestamp()
verwenden. Der Hauptgrund für falsche Anzeigezeitstempel ist das Einfügen von NOW () mit einfachen Anführungszeichen ! In MySQL Workbench hat es nicht funktioniert. Aus diesem Grund IDE fügen Sie einfache Anführungszeichen für MySQL-Funktionen hinzu und erkannten es nicht sofort.)
Verwenden Sie keine Funktionen mit einfachen Anführungszeichen wie in MySQL Workbench. Es funktioniert nicht.