我已经尝试了大约两个小时才能让这个工作没有运气。我正在尝试将输入的日期(例如11/18/2012)转换为mysql时间戳,但我尝试过的所有内容最终都是00:00:00或数据库中的NULL :(我'使用PHP + MYSQL,因此两者中的解决方案都很棒
答案 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)
正确答案将取决于您正在尝试做什么,但在大多数情况下,它是这些事情的组合:
这使您不必转换为甚至知道MySQL所期望的本机格式。