Преобразование строки в формат метки времени MySQL в php - PullRequest
12 голосов
/ 18 августа 2011

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

$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 (string) преобразует ее в unix-время.
Но я думаю, что MySQL хранит его по-другому.Спасибо.

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

РЕДАКТИРОВАТЬ: хотя мой запрос неверный.Cannon использует предложение where с опцией Insert into.
Запрос должен быть UPDATE .... SET ... = ... WHERE ....
Но принятый ответ - это правильный способ использовать время внутри предложения WHERE.

Ответы [ 3 ]

30 голосов
/ 18 августа 2011

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

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

, если вы хотите проверить часовые пояса и т. Д., Вы должны использовать strftime вместо даты

3 голосов
/ 18 августа 2011

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

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

В результате будет получена строка , подобная следующей:

2011-08-18 16: 31: 32

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

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

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

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

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

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

1 голос
/ 18 августа 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...