2012-02-22 4 views
10

У меня есть одна проблема ... В моей базе данных MySQL есть таблица, в которой хранятся записи списка дел внутри календаря типа JQuery.
Мне нужно было создать calendar_id, который сгенерирует напоминание, как только я создам временную метку (считая, что время, когда я нажимал на любой из датских календарей календаря, чтобы вставлять некоторые задачи - ставьте его просто: созданный datetime).Datetime to Integer

Это приложение для работы со списком дел - это внешнее приложение, над которым я работал, для интеграции с моей собственной системой управления. Я заметил, что столбец timestamp находится в формате int(11), поэтому любая введенная временная метка будет преобразована в целое число.

Например, посмотрите на это:

2012-02-22 15:31:24 

преобразованный в

1329899400 

Как мы можем преобразовать DateTime в этот формат? Это не в секундах, когда я пробовал:

intval(floor($datetime/86400)); 

Любая помощь?

+0

Я не верю, что DateTime не может быть представлено целым числом. DateTime - это количество секунд с (в зависимости от нескольких favtors) с определенной даты в 1970 году. Вам нужно выяснить, что представляет значение, поскольку это действительно не похоже на то, что вы на самом деле знаете. –

+0

Да, я выясняю, что представляет значение, потому что последовательность чисел является «нечетной» для любой вставленной отметки времени. По крайней мере для меня это первый раз, когда я испытываю это, поскольку я все еще изучаю PHP/MySQL:) – foxns7

+0

@Selang: номер [отметка времени UNIX] (http://en.wikipedia.org/wiki/Unix_timestamp). Они широко используются (особенно в системах UNIX). – Chris

ответ

14

FROM UNIXTIME может форматировать UNIX метки времени в полях даты и времени:

SELECT FROM_UNIXTIME(time) 
FROM ... 

обратная функция будет UNIX_TIMESTAMP.


В качестве альтернативы вы можете сделать это в PHP, если таковые имеются:
Чтобы сохранить дату в формате БД это следующим образом:

$datetimeStr = '2012-02-22 15:31:24'; 
$datetime = strtotime($datetimeStr); 

Для извлечения его из БД и отформатировать его в оригинальный формат, использовать что-то вроде этого:

$dateTimeFromDB = '1329921084'; 
$datetimeStr = date('Y-m-d H:i:s', $dateTimeFromDB); 
+0

Geez, я абсолютно дурак, потому что не изучил эту функцию Unixtime ... спасибо за ответ – foxns7

+0

Это сработало! Спасибо ... – foxns7

+1

Как насчет дат, меньших, чем 01.01.1970? –

6

Вот UNIX_TIMESTAMP() функции хорошего MySQL для вас

+0

«INSERT INTO db.table (« timestamp ») VALUES (UNIX_TIMESTAMP ($ datetime))»; правильная команда в моем случае? – foxns7

+0

Если ваше '$ datetime' находится в формате' YYYY-MM-DD HH: MM: SS' (обратите внимание, что вы можете использовать разные разделители вместо '-' и': ', то да. Альтернативно, видя, что вы используете PHP , вы можете использовать его 'strtotime()' function. – Mchl

+0

Я забыл сказать вам, что я выполнил $ datetime = strtotime ($ datetime), но значения в базе данных будут читать только 2012 год, что является частью Year. Как это произошло? – foxns7