我已经尝试了大约两个小时来让这个工作没有运气。我正在尝试将像 11/18/2012 这样输入的日期转换为 mysql 时间戳,但我尝试过的所有内容都以数据库中的 0000-00-00 00:00:00 或 NULL 结尾:(我' m 使用 PHP + MYSQL,所以任何一个解决方案都会很棒
问问题
6255 次
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
正确答案将取决于您正在尝试做什么,但在大多数情况下,它是这些事情的组合:
- 使用 DateTime 对象而不是字符串来表示 PHP 中的时间戳。(在输入时转换它而不是在写入数据库时)。
- 使用具有占位符的数据库接口,并在填写 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 回答