Преобразование строки в формат метки времени MySQL в php


Я пишу запрос на php, используя строку, отправленную из приложения Android java.
Запрос выглядит примерно так:

$insertSQL = sprintf("INSERT INTO app_DuckTag (taste) VALUES (%s) WHERE species=%s AND timestamp=%s",
                         GetSQLValueString($_POST['taste'], "text"),
                         GetSQLValueString($_POST['species'], "text"),
                         GetSQLValueString($_POST['timestamp'], "text"));

Но я сомневаюсь, что метка времени хранится в виде строки внутри MySQL.
Как мне преобразовать строку в формат времени, как в MySQL?
Функция php strtotime(строка) преобразует его во время unix.
Но MySQL хранит его по-другому, я думаю. Спасибо.

РЕДАКТИРОВАТЬ: Вот как это отображается в MySQL phpmyadmin: 2011-08-16 17:10:45

ИЗМЕНИТЬ: Хотя мой запрос неверен. Кэннон использует предложение where с вставкой в.
Запрос должен быть ОБНОВЛЕН.... УСТАНОВИТЬ... =... где....
Но принятый ответ - это правильный способ использовать время внутри предложения WHERE.

Author: Brahadeesh, 2011-08-18

3 answers

Это должно быть все:

date("Y-m-d H:i:s", strtotime($_POST['timestamp']));

Если вы хотите проверить наличие часовых поясов и тому подобного, вам следует использовать strftime вместо даты

 29
Author: PvdL, 2011-09-27 19:38:34

Если вы можете получить входную "строку" (в которой вы не указали формат, в котором вы ее получаете) в значение метки времени Unix, вы можете легко преобразовать ее в формат даты и времени MySQL следующим образом:

$mysqldatetime = date("Y-m-d H:i:s", $unixTimeStampValue);

Это приведет к строке , аналогичной следующей:

2011-08-18 16:31:32

, который является форматом формата MySQL datetime. Если вы используете другой формат времени, то первый аргумент функции date будет по-другому.

Смотрите руководство по функции дата для получения дополнительной информации и других способов форматирования возвращаемого значения.

Редактировать

Вы получаете строку, отформатированную в формате MySQL datetime. После его очистки вы можете вставить его непосредственно в базу данных. Для MySQL это может быть тип данных "дата-время", но для PHP это просто строка (точно так же, как весь ваш SQL-запрос является не более чем строкой для PHP).

$timestamp = mysql_real_escape_string($_POST['timestamp']);

Ты должна быть возможность безопасно вставить это в вашу базу данных для поля метки времени.

 3
Author: Jeff Lambert, 2011-08-18 19:45:33

В mysql есть функция FROM_UNIXTIME. Почему вы не хотите им пользоваться?

 1
Author: realmfoo, 2011-08-18 19:55:05