将日期导入MySQL

时间:2012-11-17 08:24:41

标签: php mysql sql database date

我似乎无法找到关于此的任何信息..

我需要将字符串转换为日期,以便将其正确导入SQL DATE字段。当我将12/25/2012导入数据库时​​,它显示为0000-00-00

这样做的正确方法是什么?

链接和参考赞赏。

3 个答案:

答案 0 :(得分:4)

MySQL接受此格式的日期YYYY-MM-DD,或者将日期格式12/25/2012更改为2012-12-25,或者修改它们以匹配正确的格式。

修改 如果您想继续使用自己的格式,请尝试使用

list($d,$m,$y) = explode("/", "12/25/2012"); //replace 12/25/2012 with your date
$hyphenDate = $y . '-' . $m . '-' . $d;
echo  $hyphenDate;

答案 1 :(得分:2)

正如@Ravi在他的回答中指出的那样,MySQL接受YYYY-MM-DD格式的日期。引自11.1.5. Date and Time Types 1

  

虽然MySQL试图解释几种格式的值,但是日期   零件必须始终以年 - 月 - 日的顺序给出

为此,您可以使用str_todate() 2 函数对其进行格式化:

str_to_date('12/25/2012', '%m/%d/%Y);

SQL Fiddle Demo

这样,这些输入字符串将作为日期对象存储在数据库中(没有任何特定的日期格式)。稍后,如果要以特定格式输出这些日期,可以使用DATE_FORMAT 3 对其进行格式化。类似的东西:

SELECT DATE_FORMAT(datefield, '%Y-%m-%d') FROM Test;
--2012-12-25

1,2,3: 您要求的链接和引用。

答案 2 :(得分:0)

使用类DateTime。例子:

$SomeDate = new DateTime();
echo $SomeDate->format( 'Y-m-d H:i:s' );  //Must be MySQL compatible (YYYY-MM-DD)

$ThisDate = new DateTime( date( 'Y-m-d H:i:s' ) );
echo $ThisDate->format( 'Y-m-d H:i:s' );  //Must be MySQL compatible (YYYY-MM-DD)