แทรกวันที่ปัจจุบันใน mySQL รูปแบบ datetime


101

ฉันมีปัญหาในการใส่วันที่ลงในฐานข้อมูลอย่างถูกต้อง

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

ฉันใช้รูปแบบนี้และมันสะท้อนออกมาอย่างถูกต้องอย่างไรก็ตามฉันแทรกเมื่อใด

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

ดูเหมือนว่าจะทำงานไม่สำเร็จและเวลายังคงเป็น 00:00:00 หากคุณสามารถหาวิธีแก้ปัญหาที่ดีได้ขอบคุณ


2
Dateposted คือรูปแบบวันที่และเวลา
CCates

คำตอบ:


224

หากคุณต้องการจัดเก็บเวลาปัจจุบันเพียงใช้ฟังก์ชันของ MYSQL

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

หากคุณต้องการใช้ PHP ในการทำรูปแบบดังกล่าวก็Y-m-d H:i:sลองดู

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

21
แต่จะใช้ MySQL server locale / timezone หากคุณมี Apache / PHP และ MySQL บนเซิร์ฟเวอร์ที่แตกต่างกันและตั้งค่าเขตเวลาไม่ถูกต้องในหนึ่งในนั้นคุณจะมีค่าที่แตกต่างกัน
Jeff_Alieffson

3
@Jeff_Alieffson พูดถูก แนะนำให้ใช้UTC_TIMESTAMP()( dev.mysql.com/doc/refman/5.5/en/… ) แทนNOW()
Ejaz

ฉันลองเหมือนกัน แต่ฉันได้รับ 0000-00-00 00:00:00 และประเภทข้อมูลของฉันคือวันที่และเวลา ความช่วยเหลือใด ๆ ในเรื่องนี้
user9437856

จะเป็นการดีที่จะใช้ PDO แทน mysql_query () ใช่ไหม
DaWe



6

NOW()ใช้เพื่อแทรกวันที่และเวลาปัจจุบันในตาราง MySQL ทุกช่องที่มีประเภทข้อมูลDATETIME, DATE, TIME & TIMESTAMPทำงานได้ดีกับฟังก์ชันนี้

YYYY-MM-DD HH: mm: SS

สาธิต:

รหัสต่อไปนี้แสดงการใช้งาน NOW()

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


2

" datetime " คาดว่าวันที่จะจัดรูปแบบเช่นนี้: YYYY-MM-DD HH: MM: SS

ดังนั้นจัดรูปแบบวันที่ของคุณให้เป็นแบบนั้นเมื่อคุณกำลังแทรก


ฉันจะทำวันที่ ("YYYY / MM / DD HH: MM: SS", time ());?
CCates

1
ไม่? ใช้เครื่องหมายขีดกลาง (-) ไม่ใช่เครื่องหมายทับ (/)
ม.ค. 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! คำตอบที่ดีอธิบายและระบุรหัส พิจารณาอัปเดตคำตอบของคุณเพื่อให้มีคำอธิบายเกี่ยวกับวิธีการทำงานของรหัสนี้และเหตุใดจึงเป็นตัวเลือกที่ดีที่สุด
Ajean

1

หากคุณผ่านวันที่จาก PHP คุณสามารถใช้รูปแบบใดก็ได้โดยใช้STR_TO_DATE()ฟังก์ชัน mysql ให้ Conseder คุณกำลังแทรกวันที่ผ่านแบบฟอร์ม html

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

datepostedควรจะ MySQL dateประเภท หรือ mysql จะเพิ่ม 00:00:00
ในบางกรณีคุณควรใส่วันที่และเวลาเข้าด้วยกันใน DB เพื่อให้คุณสามารถคำนวณเป็นชั่วโมงและวินาทีได้ ().

$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

วิธีที่ดีที่สุดในการทำให้ง่ายขึ้นและมีประสิทธิภาพคือ:

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

ตอนนี้เมื่อคุณแทรกแถวลงในตารางคุณสามารถข้ามฟิลด์นี้ ( time_updated) ได้เนื่องจากจะเติมเวลาปัจจุบันเป็นค่าเริ่มต้น


0

เพียงใช้กับเขตเวลาของคุณ:

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

0

$ date = วันที่ ('Ymd H: i: s'); ด้วยประเภท: 'datetime' ทำงานได้ดีมากสำหรับฉันเพราะฉันต้องการพิมพ์วันที่และเวลาทั้งหมด ..

$ date = วันที่ ('Ymd H: i: s'); $ stmtc-> bindParam (2, $ วันที่);


0

ขึ้นอยู่กับประเภทข้อมูลที่คุณตั้งไว้สำหรับตารางฐานข้อมูลของคุณ

วันเวลา (ประเภทข้อมูล)

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.

วันที่ (ประเภทข้อมูล)

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.

เวลา (ประเภทข้อมูล)

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

ฉันเชื่อว่าคุณต้องเปลี่ยนรหัสของคุณเล็กน้อยดังต่อไปนี้ควบคู่ไปกับประเภทไฟล์ฐานข้อมูลของคุณ

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

หวังว่าจะทำงานได้อย่างสมบูรณ์


-3

ใช้สิ่งนี้

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

จากนั้นใน MYSQL จะทำ

type=varchar

จากนั้นวันที่และเวลาจะถูกแทรกเรียบร้อยแล้ว


ฟังก์ชันแรกของคุณเหมือนกับที่ใช้ในคำถาม และส่วนที่เหลือของคำตอบนี้ไม่ได้หมายความว่าจะเปิดคำถามอายุ 5 ปีขึ้นมาใหม่ โปรดอธิบายว่าเหตุใดคุณจึงคิดว่าโซลูชันของคุณดีกว่าที่โพสต์เมื่อ 5 ปีที่แล้ว
Matthew Ciaramitaro

เพราะในคำถามเก่าไม่ได้อธิบายเกี่ยวกับประเภทข้อมูล
vikas pandey

-5

ลองทำตามนี้

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

สิ่งนี้จะตั้งค่า jQuery datepicker คำถามเกี่ยวกับการแทรกลงในฐานข้อมูล MySQL
Teepeemm
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.