ISO 8601日期进入MySQL数据库 - 只是无法让它工作

时间:2012-01-26 16:34:07

标签: mysql datetime iso8601

我有一个非常简单的问题,但我无法对它进行排序,相对较新的PHP和MySQL,这就是我挣扎的原因

概述 - 我想使用PHP

将ISO8601日期插入MySQL数据库表

我有一个text.xml文件,其中有一个时间戳(在MeanPublic下),其中是ISO8601格式,即YYYY-MM-DDTHH:MM:SS

我可以用PHP读取文件,我可以回复ISO8601的日期,但是,如果我将它插入MySQL它只是登录0000-00-00 00:00:00。我已经尝试从日期中删除“T”但是没有用。

我尝试在vchar,char,int,date,datetime和time中设置数据库表字段,什么都没有。但是,如果我在插入中插入一个手动日期/时间,则插入确定。

将日志记录为日期/时间至关重要,因为我需要稍后对这些值运行日期/时间查询

这是代码

if( ! $xml = simplexml_load_file('test.xml') ) 
    { 
        echo 'unable to load XML file'; 
    } 
    else 
    { 
        foreach( $xml as $MeanPublic ) 
        {
        $key = split(":", $MeanPublic->Key);
        $meanvalue = $MeanPublic->Mean;
        $FTSvalue = str_replace('T', ' ', $MeanPublic->Timestamp);

mysql_query("INSERT INTO table (totwhout, wbstamp) VALUES ($meanvalue, $FTSvalue)");
       }

2 个答案:

答案 0 :(得分:2)

您可能已经检查了这个,但是在构造查询时是否在时间戳值周围加上单引号?从你发布的代码来看,它看起来不像你--MySQL期望TIMESTAMP值在这方面像字符串一样传递。

答案 1 :(得分:1)

看起来这个问题不是由DATE / TIME格式引起的。您应该在SQL中使用引号括起字符串。

mysql_query("INSERT INTO table (totwhout, wbstamp) VALUES ('$meanvalue', '$FTSvalue')");