将mm / dd / yyyy转换为mysql时间戳?

时间:2012-11-29 11:45:39

标签: php mysql timestamp

我已经尝试了大约两个小时才能让这个工作没有运气。我正在尝试将输入的日期(例如11/18/2012)转换为mysql时间戳,但我尝试过的所有内容最终都是00:00:00或数据库中的NULL :(我'使用PHP + MYSQL,因此两者中的解决方案都很棒

8 个答案:

答案 0 :(得分:8)

试试这个

 $release_date=$_POST['release_date'];
    echo date("Y-m-d H:i:s",strtotime($release_date));

答案 1 :(得分:1)

PHP的DateTime救援!

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

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

答案 2 :(得分: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

的原因

答案 3 :(得分:0)

您是否尝试过strtotime()http://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]);

或者在这里发布的答案中的任何其他建议?

答案 4 :(得分:0)

我最喜欢的方法:

$date = '10/1/2012';
$mysqlDate = date('Y-m-d', strtotime($date));

答案 5 :(得分: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"

答案 6 :(得分:0)

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

如果是,请使用

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

或者您可以使用

 select convert(str_to_date('11/18/2012','%m/%d/%Y'),DATETIME)

答案 7 :(得分:0)

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

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