将 php 日期转换为 mysql 格式

2022-08-30 09:43:02

我在php中有一个日期字段,它正在使用下面的代码:

$date = mysql_real_escape_string($_POST['intake_date']);

如何将其转换为MySql格式0000-00-00以包含在数据库中。它是否沿着以下行:日期('Y-m-d' strtotime($date);。我问的原因是,我已经尝试了这种变体,但我似乎无法让它发挥作用。要么显示为1970年,要么显示其他一些变体。非常感谢


答案 1
$date = mysql_real_escape_string($_POST['intake_date']);

1. 如果您的 MySQL 列是类型:DATE

$date = date('Y-m-d', strtotime(str_replace('-', '/', $date)));

2. 如果您的 MySQL 列是类型:DATETIME

$date = date('Y-m-d H:i:s', strtotime(str_replace('-', '/', $date)));

你不必工作,因为它不能与破折号分隔符一起使用,它会尝试做减法。strototime()-


更新,您的日期格式设置方式不能使用,请改用以下代码:strtotime()

$date = '02/07/2009 00:07:00';
$date = preg_replace('#(\d{2})/(\d{2})/(\d{4})\s(.*)#', '$3-$2-$1 $4', $date);
echo $date;

输出:

2009-07-02 00:07:00

答案 2

这个网站有两个非常简单的解决方案 - 只需检查代码,我提供了描述,以防万一你想要它们 - 节省你的一些点击。

http://www.richardlord.net/blog/dates-in-php-and-mysql

1.一个常见的解决方案是将日期存储在DATETIME字段中,并使用PHP date()和strtotime()函数在PHP时间戳和MySQL DATETIMEs之间进行转换。这些方法将按如下方式使用-

$mysqldate = date( 'Y-m-d H:i:s', $phpdate );
$phpdate = strtotime( $mysqldate );

2.我们的第二个选择是让MySQL来做这项工作。MySQL具有可用于在访问数据库时转换数据的函数。UNIX_TIMESTAMP将从 DATETIME 转换为 PHP 时间戳,FROM_UNIXTIME将从 PHP 时间戳转换为 DATETIME。这些方法在 SQL 查询中使用。因此,我们使用这样的查询插入和更新日期 -

$query = "UPDATE table SET
    datetimefield = FROM_UNIXTIME($phpdate)
    WHERE...";
$query = "SELECT UNIX_TIMESTAMP(datetimefield)
    FROM table WHERE...";

推荐