0

我有一个字段设置为date在 mysql 表中键入。我从用户那里得到日、月和年,目前我返回的值是这样的:

[start_dateMonth] => 08 //$stardMonth
[start_dateDay] => 7 //$startDay
[start_dateYear] => 2013 //$startYear

如何将其转换为可以轻松插入数据库的有效日期?

这是我自己的代码,但由于某些原因,浏览器只显示一个空白屏幕,里面没有源代码:

$format = 'Y-m-d H:i:s';
$start = DateTime::createFromFormat($format, "$startYear-$startMonth-$startDay $startHour:$startMinutes:00");

echo $start;
4

4 回答 4

3

最不模棱两可的形式可能是2013-08-07……但其他形式也是可能的。查阅MySQL 手册

于 2013-08-07T22:03:36.883 回答
0

从手册

尽管 MySQL 尝试以多种格式解释值,但日期部分必须始终按年-月-日顺序给出(例如,'98-09-04'),而不是按月-日-年或日-月-其他地方常用的年份顺序(例如,'09-04-98'、'04-09-98')

. 包含两位数年份值的日期不明确,因为世纪是未知的。MySQL 使用以下规则解释两位数年份值:70-99 范围内的年份值转换为 1970-1999。00-69 范围内的年份值转换为 2000-2069。

位于此处 http://dev.mysql.com/doc/refman/5.5/en/date-and-time-types.html

或者date("Y-m-d")如果你想用 php 函数生成

于 2013-08-07T22:07:37.913 回答
0

你可以使用

$startYear . '-' . $startMonth . '-' . $startDay

请务必使用checkdate()检查日期是否有效

于 2013-08-07T22:04:52.497 回答
0

MySQL 接受字符串作为日期,正如其他人指出的那样,尽可能使用ISO8601 日期

$isodate = $year."-".$month."-".$day;
$sql = "INSERT INTO table (datecol) VALUES ('$isodate')";
于 2013-08-07T22:09:05.710 回答