如何使用PHP在MySQL数据库中存储日期?

时间:2009-09-25 12:51:50

标签: php mysql date

我想在MySQL数据库中存储日期值。

我有一个名为A.php的PHP页面有3个输入:dmy,其中d = (1 ... 31)m =(1 ... 12)y = (1970 to 2009)

现在在b.php我收集了这些值,我需要存储在我的数据库中。

我的数据库有一个名为dob的字段,它是日期类型。

如何从dmy构建日期类型的变量并将其存储在数据库中?

5 个答案:

答案 0 :(得分:8)

mysql日期字段采用'yyyy-mm-dd'格式,因此请将其存储,但将其作为PHP中的字符串传递,包括破折号。

答案 1 :(得分:2)

你可以传递一个字符串:

$sql = 'insert into tbl (dob) values 
        (\'' . $month . '/' . $day . '/' . $year . '\')';

MySQL将为您进行正确的转换,因此您甚至不必担心它。

确保您已完成mysql_real_escape_string以防止对所有变量进行SQL注入。

答案 2 :(得分:1)

要构造date类型的变量,请使用mktime()函数:

$date = mktime(0, 0, 0, $month, $day, $year);

要将$ date存储在数据库中,请将日期转换为字符串:

$sql = "INSERT INTO table (dob) VALUES ('" . date('Y-m-d', $date) . "')";

或者,使用mySQLi:

$query = $db->prepare('INSERT INTO table (dob) VALUES (FROM_UNIXTIME(?))');
$query->bind_param('i', $date);
$query->Execute();

答案 3 :(得分:1)

最好将它作为UNIX时间戳存储在数据库中,因为它是跨平台的

mktime()

然后,当您从数据库中检索它时,请使用

date()

将其转换为您想要的任何格式(例如2009年10月31日; 2009年10月31日;等)

答案 4 :(得分:1)

太久了。只需这样做:

$dt = sprintf("%'04s-%'02s-%'02s",$y,$m,$d);
mysql_query("insert into mytable (dob) values ('$dt')");