Дата ISO 8601 в базу данных MySQL - просто не могу заставить ее работать - PullRequest
1 голос
/ 26 января 2012

У меня действительно простая проблема, но я просто не могу ее решить, довольно новая для PHP и MySQL, поэтому я борюсь с ней

Обзор - я хочу вставить дату ISO8601 в таблицу БД MySQL, используя PHP

У меня есть файл text.xml с меткой времени (в разделе MeanPublic) в формате ISO8601, т. Е. ГГГГ-ММ-ДДТЧЧ: ММ: СС

Я могу прочитать файл на 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 ]

2 голосов
/ 26 января 2012

Вы, наверное, уже проверяли это, но ставите ли вы одинарные кавычки вокруг значения метки времени при построении запроса? Судя по вашему опубликованному коду, это не похоже на вас - MySQL ожидает, что значения TIMESTAMP будут передаваться как строки в этом отношении.

1 голос
/ 26 января 2012

Похоже, что эта проблема не была вызвана форматом ДАТА / ВРЕМЯ. Строки следует заключать в кавычки в SQL.

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