Bagaimana cara mendapatkan tanggal & waktu saat ini di MySQL?

148

Apakah ada nilai atau perintah seperti DATETIME yang dapat saya gunakan dalam permintaan manual untuk memasukkan tanggal dan waktu saat ini?

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

Nilai DATETIME yang dikutip di akhir adalah di mana saya ingin menambahkan tanggal dan waktu saat ini.

Samuel Nicholson
sumber
6
SEKARANG (), lihat dev.mysql.com/doc/refman/5.5/en/… ... Dan tolong, lain kali masukkan beberapa upaya penelitian ke dalam pertanyaan Anda, ini dapat dengan mudah di-google-googled (oleh karena itu saya baru saja menurunkan pertanyaan ini. )
dirkk
Pertanyaan saya lebih ditujukan pada bagaimana saya harus menggunakannya dalam sintaks yang saya posting di atas.
Samuel Nicholson
1
Lihat jawaban franciscos untuk itu. Tapi ini sangat, sangat mendasar, itu hanya panggilan fungsi. Oleh karena itu, sekali lagi, Anda harus melakukan upaya penelitian lebih dalam masalah ini sebelum memposting pertanyaan dan Anda mungkin ingin membaca beberapa instruksi tentang SQL.
dirkk
7
ironis. ketika berusaha menemukan jawaban yang Anda dapatkan untuk ... jawaban ini!
Zach Smith

Jawaban:

266

Anda bisa menggunakan NOW():

INSERT INTO servers (server_name, online_status, exchange, disk_space, network_shares, c_time)
VALUES('m1', 'ONLINE', 'exchange', 'disk_space', 'network_shares', NOW())
francisco.preller
sumber
1
# 1054 - 'Cap' kolom tidak dikenal di 'daftar bidang' - Apakah ada sesuatu yang saya lewatkan?
Samuel Nicholson
45
Ganti saja stempel dengan apa pun nama bidang Anda, sungguh. Jangan hanya menyalin dan menempel.
francisco.preller
8
Jika ini jenis bidang "tanggal", Anda juga bisa menggunakancurdate()
tandy
32

Gunakan CURRENT_TIMESTAMP () atau sekarang ()

Suka

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

atau

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

Ganti date_time dengan nama kolom yang ingin Anda gunakan untuk memasukkan waktu.

Ankit Sharma
sumber
25

Meskipun ada banyak jawaban yang diterima, saya pikir cara ini juga mungkin:

Buat tabel 'server' Anda sebagai berikut :

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

Dan pernyataan INSERT Anda harus :

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

Lingkungan saya:

Laptop Core i3 Windows dengan RAM 4GB, dan saya melakukan contoh di atas pada MySQL Workbench 6.2 (Versi 6.2.5.0 Build 397 64 Bits)

Erandi
sumber
5

Ya, Anda bisa menggunakan CURRENT_TIMESTAMP()perintah.

Lihat di sini: Fungsi Tanggal dan Waktu

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

Jawaban yang benar adalah SYSDATE () .

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

Kita dapat mengubah perilaku ini dan NOW()berperilaku dengan cara yang sama seperti SYSDATE()dengan mengatur argumen baris perintah sysdate_is_nowTrue .

Perhatikan bahwa NOW()(yang memiliki CURRENT_TIMESTAMP()alias), berbeda SYSDATE()dengan cara yang halus :

SYSDATE () mengembalikan waktu di mana ia dijalankan. Ini berbeda dari perilaku untuk SEKARANG (), yang mengembalikan waktu konstan yang menunjukkan waktu di mana pernyataan mulai dijalankan. (Di dalam fungsi atau pemicu yang tersimpan, SEKARANG () mengembalikan waktu di mana fungsi atau pernyataan pemicu mulai dijalankan.)

Seperti yang ditunjukkan oleh Erandi , yang terbaik adalah membuat tabel Anda dengan DEFAULTklausa sehingga kolom akan terisi secara otomatis dengan cap waktu ketika Anda memasukkan baris baru:

date_time datetime NOT NULL DEFAULT SYSDATE()

Jika Anda ingin tanggal saat ini dalam format zaman , maka Anda dapat menggunakan UNIX_TIMESTAMP () . Sebagai contoh:

select now(3), sysdate(3), unix_timestamp();

akan menghasilkan

+-------------------------+-------------------------+------------------+
| now(3)                  | sysdate(3)              | unix_timestamp() |
+-------------------------+-------------------------+------------------+
| 2018-11-27 01:40:08.160 | 2018-11-27 01:40:08.160 |       1543282808 |
+-------------------------+-------------------------+------------------+

Terkait:

codeforester
sumber
1

Dalam desain basis data, saya sangat merekomendasikan menggunakan Unixtime untuk konsistensi dan kinerja pengindeksan / pencarian / perbandingan.

UNIX_TIMESTAMP() 

Seseorang dapat selalu mengonversi ke format yang dapat dibaca manusia setelahnya, menginternasionalisasi seperti yang paling nyaman secara individual.

FROM_ UNIXTIME (unix_timestamp, [format ])
tony gil
sumber
1

Jika Anda membuat perubahan nilai default menjadi CURRENT_TIMESTAMPlebih efisien,

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

Anda dapat menggunakan tidak hanya now(), juga current_timestamp()dan localtimestamp(). Alasan utama cap waktu tampilan yang salah adalah menyisipkan SEKARANG () dengan tanda kutip tunggal ! Tidak berfungsi untuk saya di MySQL Workbench karena IDE ini menambahkan tanda kutip tunggal untuk fungsi mysql dan saya tidak mengenalinya sekaligus)

Jangan gunakan fungsi dengan tanda kutip tunggal seperti di MySQL Workbench. Itu tidak bekerja.

obohovyk
sumber
-9
$rs = $db->Insert('register',"'$fn','$ln','$email','$pass','$city','$mo','$fil'","'f_name','l_name=','email','password','city','contact','image'");
pengguna3656636
sumber
Anda harus segera menjelaskan jawaban Anda.
Sebastian Zartner
Jawaban ini memang sangat sedikit artinya!
Matteo Tassinari