Chèn ngày hiện tại ở định dạng datetime mySQL


96

Tôi đang gặp sự cố khi chèn đúng ngày vào cơ sở dữ liệu của mình.

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

Tôi sử dụng định dạng này và nó phát ra âm thanh chính xác, tuy nhiên, khi nào, tôi chèn

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

nó dường như không hoạt động thành công và, thời gian vẫn còn là 00:00:00 Nếu bạn có thể tìm ra giải pháp tuyệt vời, cảm ơn.


2
Dateposted là định dạng ngày giờ.
CCates

Câu trả lời:


221

Nếu bạn đang muốn lưu trữ thời gian hiện tại, chỉ cần sử dụng các chức năng của MYSQL.

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

Nếu bạn cần sử dụng PHP để làm điều đó, hãy định dạng nó Y-m-d H:i:sđể thử

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

21
Nhưng nó sẽ sử dụng ngôn ngữ / múi giờ của máy chủ MySQL. Nếu U có Apache / PHP và MySQL trên các máy chủ khác nhau và múi giờ được đặt không chính xác ở một trong số chúng thì U sẽ có các giá trị khác nhau.
Jeff_Alieffson

3
@Jeff_Alieffson nói đúng. Sử dụng UTC_TIMESTAMP()( dev.mysql.com/doc/refman/5.5/en/… ) được ưu tiên thay vìNOW()
Ejaz,

Tôi đã thử tương tự nhưng tôi nhận được 0000-00-00 00:00:00 và loại dữ liệu của tôi là datetime. bất kỳ giúp đỡ trong việc này?
user9437856



6

NOW()được sử dụng để chèn ngày và giờ hiện tại trong bảng MySQL. Tất cả các trường có kiểu dữ liệu DATETIME, DATE, TIME & TIMESTAMPhoạt động tốt với chức năng này.

YYYY-MM-DD HH: mm: SS

Trình diễn:

Đoạn mã sau đây cho thấy việc sử dụng NOW()

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

5

đặt typecột có tên datepostedDATETIMEvà chạy truy vấn sau:

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

1

" datetime " dự kiến ​​ngày sẽ được định dạng như sau: YYYY-MM-DD HH: MM: SS

vì vậy hãy định dạng ngày của bạn như vậy khi bạn đang chèn.


Vì vậy, tôi sẽ làm ngày ("YYYY / MM / DD HH: MM: SS", time ());?
CCates

Không? sử dụng dấu gạch ngang (-) chứ không phải dấu gạch chéo (/).
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
Chào mừng bạn đến với Stack Overflow! Câu trả lời tốt giải thích cũng như cung cấp mã. Cân nhắc cập nhật câu trả lời của bạn để bao gồm giải thích về cách mã này hoạt động và tại sao nó là lựa chọn tốt nhất.
Ajean

1

Nếu bạn Vượt qua ngày tháng từ PHP, bạn có thể sử dụng bất kỳ định dạng nào bằng STR_TO_DATE()hàm mysql. Hãy cho người biết rằng bạn đang chèn ngày tháng qua biểu mẫu html

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

Các datepostednên mysql dateloại. hoặc mysql sẽ thêm 00:00:00
trong một số trường hợp. Tốt hơn bạn nên chèn ngày và giờ cùng nhau vào DB để bạn có thể tính toán với giờ và giây. ().

$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

Cách tốt nhất để làm cho nó dễ dàng hơn và hiệu quả là:

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

Bây giờ, khi bạn chèn một hàng vào bảng, bạn có thể bỏ qua trường này ( time_updated) vì nó sẽ điền thời gian hiện tại làm giá trị mặc định


0

Chỉ cần sử dụng với múi giờ của bạn:

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

0

$ date = date ('Ymd H: i: s'); với loại: 'datetime' đã hoạt động rất tốt đối với tôi vì tôi muốn in toàn bộ ngày tháng và dấu thời gian ..

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


-1

Tôi tin rằng, bạn cần thay đổi mã của mình một chút như sau cùng với loại được lưu trong cơ sở dữ liệu của bạn.

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

Hy vọng, sẽ hoạt động hoàn hảo.


-2

dùng cái này

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

và sau đó trong MYSQL làm

type=varchar

sau đó ngày và giờ sẽ được chèn thành công


chức năng đầu tiên của bạn giống như được sử dụng trong câu hỏi. Và phần còn lại của câu trả lời này không đảm bảo mở lại một câu hỏi 5 năm tuổi. Vui lòng giải thích tại sao bạn cho rằng giải pháp của mình tốt hơn những giải pháp đã được đăng cách đây 5 năm.
Matthew Ciaramitaro

vì trong câu hỏi cũ không giải thích về kiểu dữ liệu
vikas Pandey

-5

Thử cái này

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

Điều này sẽ thiết lập một trình chọn ngày jQuery. Câu hỏi là về việc chèn vào cơ sở dữ liệu MySQL.
Teepeemm
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.