web-dev-qa-db-de.com

Wie bekomme ich aktuelles Datum und Uhrzeit in MySQL?

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.

124

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())
221

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.

25
Ankit Sharma

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.

21
Erandi

Ja, Sie können den Befehl CURRENT_TIMESTAMP() verwenden.

Siehe hier: Datums- und Uhrzeitfunktionen

4
Alec.
INSERT INTO servers (server_name, online_status, exchange, disk_space, network_shares)
VALUES('m1','ONLINE','exchange','disk_space','network_shares', NOW())
2

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 ])
1
tony gil

Wenn Sie den Standardwert in CURRENT_TIMESTAMP ändern, ist dies effizienter.

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

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:

0
codeforester

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.

0
obohovyk