我的$date
输出位于foreach循环中
09/25/11,02/13/11,09/15 / 10,06 / 11 / 10,04 / 13/10,04/13/10,04/13/10, 09/24/09,02/19/09,12/21/08
我的mysql查询(PHP)如下
("INSERT INTO table_name(`field1`, `field2`,`date`) VALUES ('".$value1."','".$value2 ."','".$date."')");
问题:在我的数据库中,所有日期都存储为0000-00-00 00:00:00
。但第4个日期(06/11/10)存储为2006-11-10 00:00:00
。
我尝试了date('Y-m-d H:i:s', $date);
但没有帮助。
注意:我的数据库字段是datetime类型。 有什么想法吗?
答案 0 :(得分:12)
您使用date('Y-m-d H:i:s',$date);
解决方案正确,但date()函数将时间戳作为其第二个参数,而不是日期。
我假设您的示例采用美国日期格式,因为它们看起来就是这样。你可以这样做,它应该为你提供你正在寻找的价值:
date('Y-m-d H:i:s', strtotime($date));
它无法正常工作的原因是它希望日期采用YYYY-MM-DD格式,并尝试评估您的数据。但你有MM / DD / YY,这让人感到困惑。 06/11/10示例是唯一一个可以被解释为您的示例中的有效YYYY-MM-DD日期的示例,但PHP认为您的意思是06作为年份,11表示月份,10表示当天。
答案 1 :(得分:1)
我为此目的创建了自己的功能,可能对您有所帮助:
function getTimeForMysql($fromDate, $format = "d.m.y", $hms = null){
if (!is_string($fromDate))
return null ;
try {
$DT = DateTime::createFromFormat($format, trim($fromDate)) ;
} catch (Exception $e) { return null ;}
if ($DT instanceof DateTime){
if (is_array($hms) && count($hms)===3)
$DT->setTime($hms[0],$hms[1],$hms[2]) ;
return ($MySqlTime = $DT->format("Y-m-d H:i:s")) ? $MySqlTime : null ;
}
return null ;
}
因此,在您的情况下,您使用格式m/d/yy
:
$sql_date = getTimeForMysql($date, "m/d/yy") ;
if ($sql_date){
//Ok, proceed your date is correct, string is returned.
}
答案 2 :(得分:0)
您的日期没有世纪,请尝试将其转换为:
<?php
$date = '09/25/11';
$date = DateTime::createFromFormat('m/d/y', $date);
$date = $date->format('Y-m-d');
print $date;
打印:
2011-09-25
现在你可以在MySQL中插入$ date。