2012-03-02 74 views
61

Tôi đang gặp sự cố khi tải ngày vào đúng cơ sở dữ liệu của mình.Chèn ngày hiện tại theo định dạng ngày giờ mySQL

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

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

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

nó không xuất hiện để làm việc thành công, và, thời gian vẫn còn 0:00: 00 Nếu bạn có thể tìm thấy giải pháp tuyệt vời, cảm ơn.

+0

loại gì là "dateposted" ? –

+1

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

Trả lời

154

Nếu bạn đang tìm kiếm để lưu trữ thời điểm hiện tại chỉ cần sử dụng chức năng MYSQL của.

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

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

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

Nhưng nó sẽ sử dụng miền địa phươ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 trong một trong số đó, U sẽ có các giá trị khác nhau. –

+2

@Jeff_Alieffson là đúng. Sử dụng 'UTC_TIMESTAMP()' (https://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_utc-timestamp) được ưu tiên thay vì 'NOW()' – Ejaz

1

"datetime" hy vọng ngày được formated như thế này: YYYY-MM-DD HH: MM: SS

để định dạng ngày của bạn như là khi bạn đang chèn.

+0

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

+0

Không? sử dụng dấu gạch ngang (-) không bị gạch chéo (/). –

+0

OK, cảm ơn. – CCates

27

Hãy thử điều này thay vì

$date = date('Y-m-d H:i:s'); 
5

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

YYYY-MM-DD HH: mm: SS

diễn:

Tiếp theo mã 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()); 
2

bạn có thể sử dụng CURRENT_TIMESTAMP, chức năng mysql

1

bộ số type của cột có tên datepostedDATETIME và chạy truy vấn sau:

INSERT INTO table (`dateposted`) VALUES (CURRENT_TIMESTAMP) 
0
 <?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 vào Stack Overflow! Câu trả lời hay * giải thích * cũng như cung cấp mã. Xem xét 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à tùy chọn tốt nhất. – Ajean

0

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

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

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

0

Nếu bạn Chuyển ngày từ PHP, bạn có thể sử dụng bất kỳ định dạng nào bằng cách sử dụng chức năng mysql STR_TO_DATE(). Hãy conseder bạn đang chèn ngày 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 dateposted nên mysql date loại. hoặc mysql sẽ thêm 00:00:00
trong một số trường hợp Bạn nên chèn ngày và giờ cùng nhau vào DB để bạn có thể tính toán theo 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')" ; 
-4

Hãy thử

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

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

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 lĩnh vực này (time_updated) vì nó sẽ lấp đầy với 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"); 
-1

sử dụng này

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

và sau đó trong MYSQL làm

type=varchar

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

+0

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 câu hỏi 5 năm tuổi. Vui lòng giải thích lý do tại sao bạn nghĩ giải pháp của bạn tốt hơn giải pháp được đăng 5 năm trước. –

+0

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

+0

sau khi chọn DATETIME, cửa hàng chức năng này 0000000 nên ..... –

Các vấn đề liên quan