为什么php划分日期而不是将其保存为字符串?

时间:2012-03-14 12:37:31

标签: php mysql

我有一个MySQL数据库表,其中有一个VARCHAR字段,以dd / mm / yyyy格式存储日期。

我有一种情况需要将该日期提取到变量,然后将其保存在不同的表中(结构与第一个不同)。

所以我这样做:

$result=mysql_query("select * from shares") or die(mysql_error());
$row=mysql_fetch_array($result);
$date_old=$row['last_update'];    //date in dd/mm/yyyy format

然后,当我尝试将$date_old插入到另一个表中时,PHP实际上对它执行数学除法操作,而不是插入日期!因此,它不是保存14/03/2012,而是将14除以3然后到2012,并将0.0023存储在数据库中。

当然有一种方法可以使用内置函数来阻止这种情况发生(不删除字符串中的斜线然后在插入之前将它们放回去)?

4 个答案:

答案 0 :(得分:4)

执行insert时,将值放在单引号中:" ... last_update = '$date' ... ",否则mysql将进行计算。

注意:对于存储日期,请使用date type

答案 1 :(得分:0)

这是因为,它变成了表达式14/03/2012

使用引号转义值。

$query = "INSERT INTO anothertable (data) VALUES('$olddate');";

答案 2 :(得分:0)

只需用引号括起来并制作mysql格式即

$date_new=explode("/", $date_old); //date in dd/mm/yyyy
$my_date=$date_new[2]."/".$date_new[1]."/".$date_new[0];
mysql_query("INSERT INTO myTable (FirstName, last_update, Age)VALUES ('Peter', '".$my_date."',35)");

答案 3 :(得分:0)

一般情况下(除了引用值,因为它是一个字符串): 为什么不使用以YYYY-MM-DD格式存储日期的DATE格式类型(因为它是为日期制作的类型!):

mysql manual