Преобразование строки в формат метки времени 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.
3 answers
Это должно быть все:
date("Y-m-d H:i:s", strtotime($_POST['timestamp']));
Если вы хотите проверить наличие часовых поясов и тому подобного, вам следует использовать strftime вместо даты
Если вы можете получить входную "строку" (в которой вы не указали формат, в котором вы ее получаете) в значение метки времени 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']);
Ты должна быть возможность безопасно вставить это в вашу базу данных для поля метки времени.
В mysql есть функция FROM_UNIXTIME. Почему вы не хотите им пользоваться?