Prawidłowa odpowiedź to SYSDATE () .
INSERT INTO servers (
server_name, online_status, exchange, disk_space,
network_shares, date_time
)
VALUES (
'm1', 'ONLINE', 'ONLINE', '100GB', 'ONLINE', SYSDATE()
);
Możemy zmienić to zachowanie i sprawić, by NOW()
zachowywał się w taki sam sposób, jak SYSDATE()
ustawiając argument wiersza poleceń sysdate_is_now na True
.
Zauważ, że NOW()
(który ma CURRENT_TIMESTAMP()
jako alias) różni się od SYSDATE()
w subtelny sposób:
SYSDATE () zwraca czas wykonania. Różni się to od zachowania funkcji NOW (), która zwraca stały czas wskazujący czas rozpoczęcia wykonywania instrukcji. (W ramach zapisanej funkcji lub wyzwalacza NOW () zwraca czas, w którym funkcja lub instrukcja wyzwalająca zaczęły być wykonywane.)
Jak wskazał Erandi , najlepiej jest utworzyć tabelę z DEFAULT
klauzulą, aby kolumna została automatycznie wypełniona sygnaturą czasową podczas wstawiania nowego wiersza:
date_time datetime NOT NULL DEFAULT SYSDATE()
Jeśli chcesz, aby bieżąca data była w formacie epoki , możesz użyć UNIX_TIMESTAMP () . Na przykład:
select now(3), sysdate(3), unix_timestamp();
ustąpi
+-------------------------+-------------------------+------------------+
| now(3) | sysdate(3) | unix_timestamp() |
+-------------------------+-------------------------+------------------+
| 2018-11-27 01:40:08.160 | 2018-11-27 01:40:08.160 | 1543282808 |
+-------------------------+-------------------------+------------------+
Związane z: