以日期时间格式mySQL插入当前日期


97

我在将日期正确插入数据库中时遇到问题。

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

我使用这种格式,并且正确回显,但是,当我插入

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

它似乎无法成功运行,时间仍然是00:00:00,如果您能找到很好的解决方案,谢谢。


2
Dateposted是日期时间格式。
CCates 2012年

Answers:


222

如果您要存储当前时间,请使用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服务器的语言环境/时区。如果U在不同的服务器和时区上将Apache / PHP和MySQL设置为错误,则在其中一台中,U将具有不同的值。
Jeff_Alieffson

3
@Jeff_Alieffson是正确的。首选使用UTC_TIMESTAMP()dev.mysql.com/doc/refman/5.5/en/…)代替NOW()
Ejaz 2016年

我尝试了相同的操作,但我得到的是注册时间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());

5

设置type名为datepostedas 的列DATETIME并运行以下查询:

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

1

datetime ”要求日期格式如下:YYYY-MM-DD HH:MM:SS

因此,在插入时请像这样格式化日期。


所以我会做date(“ YYYY / MM / DD HH:MM:SS”,time());?
CCates 2012年

没有?使用破折号(-)而不是斜杠(/)。
JanHančič2012年

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 2015年

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 。您最好将日期和时间一起插入数据库,这样您可以用小时和秒进行计算。()。

$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 = date('Ymd H:i:s'); 类型为:“ datetime”对我来说非常有效,因为我想打印整个日期和时间戳。

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


-1

我相信,除了数据库字段类型之外,您还需要像下面那样稍微更改代码。

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

希望能完美地工作。


-2

用这个

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

然后在MYSQL中

type=varchar

然后将成功插入日期和时间


您的第一个功能与问题中使用的功能相同。并且此答案的其余部分不保证重新开放一个已有5年历史的问题。请说明为什么您认为您的解决方案比5年前发布的解决方案更好。
马修·恰亚拉米塔罗

因为在旧问题中无法解释数据类型
vikas pandey 17-10-3

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.