2

我已经尝试了大约两个小时来让这个工作没有运气。我正在尝试将像 11/18/2012 这样输入的日期转换为 mysql 时间戳,但我尝试过的所有内容都以数据库中的 0000-00-00 00:00:00 或 NULL 结尾:(我' m 使用 PHP + MYSQL,所以任何一个解决方案都会很棒

4

8 回答 8

9

尝试这个

 $release_date=$_POST['release_date'];
    echo date("Y-m-d H:i:s",strtotime($release_date));
于 2012-11-29T11:50:36.390 回答
1

使用STR_TO_DATE

SELECT TIMESTAMP(STR_TO_DATE('11/18/2012','%m/%d/%Y'))

http://sqlfiddle.com/#!2/d41d8/4363/0

您说您尝试过:

UNIX_TIMESTAMP(STR_TO_DATE('$release_date','%m/%d/%y'))

这不起作用的原因是因为UNIX_TIMESTAMP的返回类型是无符号整数,而不是TIMESTAMP。这就是为什么你不能将它插入到TIMESTAMP列中

于 2012-11-29T11:49:53.223 回答
1

PHP 的DateTime来救命了!

$datetime = new DateTime($alternativeFormat);
echo $datetime->format('Y-m-d H:i:s'); // mysql format

也可以让 MySQL 更改数据,但我建议不要这样做。通过使用该DateTime对象,您可以打开查询以支持其他格式。

于 2012-11-29T11:48:09.687 回答
0

正确答案将取决于您正在尝试做什么,但在大多数情况下,它是这些事情的组合:

  1. 使用 DateTime 对象而不是字符串来表示 PHP 中的时间戳。(在输入时转换它而不是在写入数据库时​​)。
  2. 使用具有占位符的数据库接口,并在填写 DateTime 值时,自动将它们转换为适当的字符串格式

这使您不必转换为甚至知道 MySQL 所期望的本机格式。

于 2012-11-29T11:59:38.560 回答
0

我最喜欢的方法:

$date = '10/1/2012';
$mysqlDate = date('Y-m-d', strtotime($date));
于 2012-11-29T11:51:34.760 回答
0

你试过吗:http strtotime(): //php.net/manual/en/function.strtotime.php

或在“/”上爆炸,然后使用mktime(): http: //php.net/manual/en/function.mktime.php

$parts = explode('/', $date);
$timestamp = mktime(0, 0, 0, $parts[0], $parts[1], $parts[2]);

或此处发布的答案中的任何其他建议?

于 2012-11-29T11:47:07.350 回答
0

我会尝试这样的事情。

$sDate = '11/18/2012';

$aDate = explode('/', $sDate);

$sMySQLTimestamp = sprintf(
   '%s-%s-%s 00:00:00',
    $aDate[2],
    $aDate[0],
    $aDate[1]
);

var_dump($sMySQLTimestamp);
> string(19) "2012-11-18 00:00:00"
于 2012-11-29T11:54:43.913 回答
0

您可以将示例日期输入为 2012/11/18 吗?

如果是,请使用

select convert('2012/11/18' ,DATETIME) 

或者你可以使用

 select convert(str_to_date('11/18/2012','%m/%d/%Y'),DATETIME)
于 2012-11-29T11:55:32.700 回答