Правильный способ сохранить дату типа 1970 - PullRequest
3 голосов
/ 27 июля 2010

У меня есть дата, похожая на 1003029303, которая, как мне кажется, известна как отметка времени linux UNIX.

В каком формате я должен сохранить его как в базе данных mysql? Я не думаю, что int (10) - правильный путь.

`gottime` int(10)

Ответы [ 5 ]

9 голосов
/ 27 июля 2010

Я так понимаю, вы пытаетесь сохранить Дни рождения или что-то подобное. Формат DATETIME - это правильный способ хранения прошлых дат. Метка времени Unix должна использоваться только для элементов текущего дня, которые не превышают 30-40 +/- лет.

Формат MySQL DATETIME: ГГГГ-ММ-ДД ЧЧ: ММ: СС.

5 голосов
/ 27 июля 2010

Я предлагаю использовать тип данных DATETIME, а затем использовать функции FROM_UNIXTIME() и UNIX_TIMESTAMP() для преобразования при необходимости:

SELECT FROM_UNIXTIME(1003029303);
+---------------------------+
| FROM_UNIXTIME(1003029303) |
+---------------------------+
| 2001-10-14 05:15:03       |
+---------------------------+
1 row in set (0.08 sec)


SELECT UNIX_TIMESTAMP('2001-10-14 05:15:03');
+---------------------------------------+
| UNIX_TIMESTAMP('2001-10-14 05:15:03') |
+---------------------------------------+
|                            1003029303 |
+---------------------------------------+
1 row in set (0.00 sec)
4 голосов
/ 27 июля 2010

Вы не должны хранить метки времени UNIX в своей базе данных.Главным образом потому, что базы данных MySQL (среди других брендов) включают функции DATE для расчета практически любого типа математики DATE, о которой вы только можете подумать.Принимая во внимание, что если вы сохраните его как метку времени, вам придется либо сначала конвертировать метку времени в mysql, а затем отформатировать ИЛИ использовать PHP-функцию date ().

3 голосов
/ 27 июля 2010

Метки времени - это просто целые числа. Вы можете хранить это так.

Вы также можете использовать тип данных MySQL TIMESTAMP с функциями FROM_UNIXTIME () и UNIX_TIMESTAMP () для преобразования в формат MySQL и из него.

$query = "UPDATE table SET
    datetimefield = FROM_UNIXTIME($phpdate)
    WHERE...";

$query = "SELECT UNIX_TIMESTAMP(datetimefield)
    FROM table WHERE...";
2 голосов
/ 27 июля 2010

Лично я храню даты в базах данных MySQL, используя тип поля DATETIME. Например, 2010-07-27 09:30:09.

Это гораздо легче читать, чем отметку времени, и если вам нужно преобразовать ее в отметку времени UNIX, вы можете сделать это с помощью функции PHP strtotime().

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