MySQL'de güncel tarih ve saat nasıl alınır?


153

Manuel bir sorguda geçerli tarih ve saati eklemek için kullanabileceğim DATETIME gibi bir değer veya komut var mı?

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

Sonunda alıntılanan DATETIME değeri, geçerli tarih ve saati eklemek istediğim yerdir.



7
ŞİMDİ (), dev.mysql.com/doc/refman/5.5/en/… adresini ziyaret edin ... Ve lütfen, bir dahaki sefere sorunuza en azından biraz araştırma çabası koyun, bu kolayca google'da aranabilir (bu nedenle bu soruyu geri aldım )
dirkk

Sorum daha çok yukarıda yazdığım sözdiziminde onu nasıl kullanmam gerektiğiyle ilgiliydi.
Samuel Nicholson

1
Bunun için franciscos cevabını görün. Ama bu çok çok basit, sadece bir işlev çağrısı. Bu nedenle, yine, bir soru göndermeden önce konuya daha fazla araştırma yapmalısınız ve ayrıca SQL ile ilgili bazı talimatları okumak isteyebilirsiniz.
dirkk

7
ironik. cevabı bulmak için çaba sarf ederken ... bu cevabı alacaksınız!
Zach Smith

Yanıtlar:


274

Şunları kullanabilirsiniz NOW():

INSERT INTO servers (server_name, online_status, exchange, disk_space, network_shares, c_time)
VALUES('m1', 'ONLINE', 'exchange', 'disk_space', 'network_shares', NOW())

1
# 1054 - "Alan listesi" nde bilinmeyen sütun "damga" - Eksik bir şey mi var?
Samuel Nicholson

46
Sadece damgayı alan adınız neyse, gerçekten değiştirin. Yalnızca kopyalayıp yapıştırmayın.
francisco.preller

9
Bir "tarih" alan curdate()
türündeyse

33

Kullanım CURRENT_TIMESTAMP () veya şimdi ()

Sevmek

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

veya

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

Tarih_saati, saati eklemek için kullanmak istediğiniz sütun adıyla değiştirin.


25

Kabul edilen birçok cevap olmasına rağmen, bunun da mümkün olduğunu düşünüyorum:

Aşağıdaki gibi 'sunucular' tablonuzu oluşturun :

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

Ve INSERT ifadeniz şöyle olmalıdır :

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

Ortamım:

4GB RAM'li Core i3 Windows Laptop ve yukarıdaki örneği MySQL Workbench 6.2'de (Sürüm 6.2.5.0 Build 397 64 Bits) yaptım



3

Doğru cevap SYSDATE () .

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

Bu davranışı değiştirebilir ve sysdate_is_now komut satırı argümanını NOW()olarak SYSDATE()ayarladığımız gibi davranabiliriz .True

Not NOW()(sahip olan CURRENT_TIMESTAMP()bir takma ad gibi), farklı olan SYSDATE()bir de ince bir şekilde:

SYSDATE (), çalıştırıldığı zamanı döndürür. Bu, ifadenin çalışmaya başladığı zamanı gösteren sabit bir zaman döndüren NOW () davranışından farklıdır. (Saklanan bir işlev veya tetikleyici içinde NOW (), işlevin veya tetikleme ifadesinin çalışmaya başladığı zamanı döndürür.)

Erandi'nin belirttiği gibi, tablonuzu DEFAULTcümle ile oluşturmak en iyisidir, böylece yeni bir satır eklediğinizde sütun otomatik olarak zaman damgasıyla doldurulur:

date_time datetime NOT NULL DEFAULT SYSDATE()

Güncel tarihi epoch formatında istiyorsanız, UNIX_TIMESTAMP () kullanabilirsiniz . Örneğin:

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

verim verecek

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

İlişkili:


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


1

Varsayılan değeri değiştirirseniz CURRENT_TIMESTAMPdaha verimli olur,

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

0

Sen sadece kullanabilirsiniz now(), ayrıca current_timestamp()ve localtimestamp(). Yanlış görüntüleme zaman damgasının ana nedeni, NOW () 'u tek tırnak işaretleriyle eklemektir ! MySQL Workbench'te benim için işe yaramadı çünkü bu IDE, mysql işlevleri için tek alıntılar ekledi ve bir kerede tanımadım)

MySQL Workbench'te olduğu gibi tek tırnak işaretli işlevleri kullanmayın. Çalışmıyor.


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

Cevabınızı kısaca açıklamalısınız.
Sebastian Zartner

Bu cevap gerçekten çok az şey ifade ediyor!
Matteo Tassinari
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.