MySQL datetime biçiminde güncel tarihi ekle


101

Tarihin veritabanıma düzgün bir şekilde eklenmesi konusunda sorun yaşıyorum.

$date = date('m/d/Y h:i:s', time());

Bu biçimi kullanıyorum ve doğru şekilde yankılanıyor, ancak ne zaman,

mysql_query("INSERT INTO table 
(dateposted) 
VALUES ('$date')");

başarılı bir şekilde çalışmıyor gibi görünüyor ve saat 00:00:00 olarak kalıyor Eğer harika bir çözüm bulabilirseniz, teşekkürler.


2
Dateposted, datetime formatıdır.
CCates

Yanıtlar:


224

Şimdiki zamanı saklamak istiyorsanız, sadece MYSQL'in işlevlerini kullanın.

mysql_query("INSERT INTO `table` (`dateposted`) VALUES (now())");

Bunu yapmak için PHP kullanmanız gerekiyorsa, biçimlendirmeyi Y-m-d H:i:sdeneyin

$date = date('Y-m-d H:i:s');
mysql_query("INSERT INTO `table` (`dateposted`) VALUES ('$date')");

21
Ancak MySQL sunucu yerel ayarını / saat dilimini kullanacaktır. U farklı sunucularda Apache / PHP ve MySQL varsa ve bunlardan birinde saat dilimi yanlış ayarlanmışsa, U farklı değerlere sahip olacaktır.
Jeff_Alieffson

3
@Jeff_Alieffson haklı. Kullanımı UTC_TIMESTAMP()( dev.mysql.com/doc/refman/5.5/en/... ) yerine tercih edilirNOW()
Ejaz

Ben de denedim ama 0000-00-00 00:00:00 alıyorum ve veri tipim datetime. bu konuda herhangi bir yardım var mı?
user9437856

Mysql_query () yerine PDO kullanmak harika olur, değil mi?
DaWe



6

NOW()MySQL tablosuna geçerli tarih ve saati eklemek için kullanılır. Veri türlerine sahip tüm alanlar DATETIME, DATE, TIME & TIMESTAMPbu işlevle iyi çalışır.

YYYY-AA-GG SS: mm: SS

Gösteri:

Aşağıdaki kod, NOW()

INSERT INTO auto_ins
(MySQL_Function, DateTime, Date, Time, Year, TimeStamp)
VALUES
(“NOW()”, NOW(), NOW(), NOW(), NOW(), NOW());

5

set typeadlı sütunun datepostedolarak DATETIMEve aşağıdaki sorguyu çalıştırın:

INSERT INTO table (`dateposted`) VALUES (CURRENT_TIMESTAMP)

2

" tarihsaat ", tarihin şu şekilde biçimlendirilmesini bekler: YYYY-AA-GG SS: DD: SS

bu yüzden tarihinizi eklerken olduğu gibi biçimlendirin.


Yani tarih ("YYYY / AA / GG SS: AA: SS", saat ()) ;?
CCates

1
Hayır? eğik çizgiler (-) kullanmayın (/).
Jan Hančič

1
     <?php $date= date("Y-m-d");
$time=date("H:m");
$datetime=$date."T".$time;
mysql_query(INSERT INTO table (`dateposted`) VALUES ($datetime));
?>

<form action="form.php" method="get">
<input type="datetime-local" name="date" value="<?php echo $datetime; ?>">
<input type="submit" name="submit" value="submit">


1
Stack Overflow'a hoş geldiniz! İyi yanıtlar kodu açıklamakla birlikte açıklar . Cevabınızı, bu kodun nasıl çalıştığı ve neden en iyi seçenek olduğu hakkında bir açıklama içerecek şekilde güncellemeyi düşünün.
Ajean

1

PHP'den tarih aktarırsanız, STR_TO_DATE()mysql işlevini kullanarak herhangi bir biçimi kullanabilirsiniz . Html formu ile tarih eklediğinizi bırakın

$Tdate = "'".$_POST["Tdate"]."'" ;    //   10/04/2016
$Tdate = "STR_TO_DATE(".$Tdate.", '%d/%m/%Y')"  ;  
mysql_query("INSERT INTO `table` (`dateposted`) VALUES ('$Tdate')");

datepostedMySQL olmalıdır datetürü. veya mysql
bazı durumlarda 00:00:00 ekler. Tarih ve saati birlikte DB'ye eklemeniz daha iyi olur, böylece saat ve saniye ile hesaplama yapabilirsiniz. ().

$Tdate=date('Y/m/d H:i:s') ; // this to get current date as text .
$Tdate = "STR_TO_DATE(".$Tdate.", '%d/%m/%Y %H:%i:%s')"  ;  

1

Bunu daha kolay ve verimli hale getirmenin en iyi yolu şudur:

CREATE TABLE table_name (
field1,
..
..
time_updated timestamp default current_timestamp
)

Şimdi, tabloya bir satır eklediğinizde, bu alanı ( time_updated) atlayabilirsiniz, çünkü varsayılan değer olarak geçerli saatle dolacaktır.


0

Sadece saat diliminizle kullanın:

date_default_timezone_set('Asia/Kolkata');      
$date=date("Y/m/d h:i:sa");

0

$ tarih = tarih ('Ymd H: i: s'); tarih ve zaman damgasının tamamını yazdırmak istediğim için 'datetime' türü benim için çok iyi çalıştı ..

$ tarih = tarih ('Ymd H: i: s'); $ stmtc-> bindParam (2, $ tarih);


0

Bu, db tablonuz için hangi veri türünü ayarladığınıza bağlıdır.

DATETIME (veri türü)

MYSQL
INSERT INTO t1 (dateposted) VALUES ( NOW() )
// This will insert date and time into the col. Do not use quote around the val
PHP
$dt = date('Y-m-d h:i:s');
INSERT INTO t1 (dateposted) VALUES ( '$dt' )
// This will insert date into the col using php var. Wrap with quote.

TARİH (veri türü)

MYSQL
INSERT INTO t1 (dateposted) VALUES ( NOW() )
// Yes, you use the same NOW() without the quotes.
// Because your datatype is set to DATE it will insert only the date
PHP
$dt = date('Y-m-d');
INSERT INTO t1 (dateposted) VALUES ( '$dt' )
// This will insert date into the col using php var.

TIME (veri türü)

MYSQL
INSERT INTO t1 (dateposted) VALUES ( NOW() )
// Yes, you use the same NOW() as well. 
// Because your datatype is set to TIME it will insert only the time
PHP
$dt = date('h:i:s');
INSERT INTO t1 (dateposted) VALUES ( '$dt' )
// This will insert time.

-1

Sanırım, kodunuzu, veritabanınızın dosyalanmış türünün yanında aşağıdaki gibi biraz değiştirmeniz gerekiyor.

mysql_query("INSERT INTO table (`dateposted`) VALUES ($datetime)");

Hope, mükemmel çalışacak.


-3

bunu kullan

$date = date('m/d/Y h:i:s', time());

ve sonra MYSQL'de

type=varchar

ardından tarih ve saat başarıyla eklenecek


ilk işleviniz soruda kullanılanla aynıdır. Ve bu cevabın geri kalanı 5 yıllık bir sorunun yeniden açılmasını garanti etmez. Lütfen çözümünüzün neden 5 yıl önce yayınlananlardan daha iyi olduğunu düşündüğünüzü açıklayın.
Matthew Ciaramitaro

çünkü eski soruda veri türü hakkında açıklama yok
vikas pandey

-5

Bunu dene

$('#datepicker2').datepicker('setDate', new Date('<?=$value->fecha_final?>')); 

Bu bir jQuery tarih seçici ayarlayacaktır. Soru bir MySQL veritabanına eklemekle ilgiliydi.
Teepeemm
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.