将php日期转换为mysql格式

bol*_*llo 50 php mysql

我在php中有一个使用此代码的日期字段:

$date = mysql_real_escape_string($_POST['intake_date']);
Run Code Online (Sandbox Code Playgroud)

如何将其转换为MySql format 0000-00-00以包含在db中.是这样的:日期('Ymd'strtotime($ date);.我问的原因,是因为我尝试了这种变化,我似乎无法让它起作用.要么显示为1970或其他一些变化非常感谢

She*_*hef 139

$date = mysql_real_escape_string($_POST['intake_date']);
Run Code Online (Sandbox Code Playgroud)

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

$date = date('Y-m-d', strtotime(str_replace('-', '/', $date)));
Run Code Online (Sandbox Code Playgroud)

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

$date = date('Y-m-d H:i:s', strtotime(str_replace('-', '/', $date)));
Run Code Online (Sandbox Code Playgroud)

你没有工作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;
Run Code Online (Sandbox Code Playgroud)

输出:

2009-07-02 00:07:00
Run Code Online (Sandbox Code Playgroud)


Joh*_*0te 15

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

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

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

$mysqldate = date( 'Y-m-d H:i:s', $phpdate );
$phpdate = strtotime( $mysqldate );
Run Code Online (Sandbox Code Playgroud)

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...";
Run Code Online (Sandbox Code Playgroud)


Gus*_*Gus 5

您正在寻找MySQL功能FROM_UNIXTIME()UNIX_TIMESTAMP().

在SQL中使用它们,例如:

mysql> SELECT UNIX_TIMESTAMP(NOW());
+-----------------------+
| UNIX_TIMESTAMP(NOW()) |
+-----------------------+
|            1311343579 |
+-----------------------+
1 row in set (0.00 sec)

mysql> SELECT FROM_UNIXTIME(1311343579);
+---------------------------+
| FROM_UNIXTIME(1311343579) |
+---------------------------+
| 2011-07-22 15:06:19       |
+---------------------------+
1 row in set (0.00 sec)
Run Code Online (Sandbox Code Playgroud)


Bai*_*ker 5

如果intake_date是一些常见的日期格式,您可以使用date()strtotime()

$mysqlDate = date('Y-m-d H:i:s', strtotime($_POST['intake_date']));
Run Code Online (Sandbox Code Playgroud)

但是,这只有在接受日期格式时才有效strtotime().有关支持的格式,请参阅其doc文档页面.


War*_*ent 5

如果您的格式为dd/mm/yyyy,请使用以下内容:

$date = explode('/', $_POST['posted_date']);
$new_date = $date[2].'-'.$date[1].'-'.$date[0];
Run Code Online (Sandbox Code Playgroud)

如果你有mm/dd/yyyy,只需更改第二行:

$new_date = $date[2].'-'.$date[0].'-'.$date[1];
Run Code Online (Sandbox Code Playgroud)