Есть ли простой способ получить метку времени Unix из метки времени SQL в php? - PullRequest
1 голос
/ 02 июня 2009

В моей таблице базы данных есть столбец, содержащий метки времени SQL (например, 2009-05-30 19:43:41). Мне нужен эквивалент метки времени Unix (целое число) в моей программе php.

$posts = mysql_query("SELECT * FROM Posts ORDER BY Created DESC");
$array = mysql_fetch_array($posts);
echo $array[Created];

Там, где сейчас отражается метка времени SQL, я хочу метку времени Unix. Есть ли простой способ сделать это?

Ответы [ 2 ]

12 голосов
/ 02 июня 2009

strtotime() с радостью примет отметку времени SQL и преобразует ее в время UNIX:

echo strtotime($array['Created']);

Обратите внимание, что не рекомендуется использовать кавычки вокруг ключей массива. Согласно документам :

Всегда используйте кавычки вокруг индекса строкового литерала. Например, $ foo ['bar'] является правильным, а $ foo [bar] - нет.

Это неправильно, но работает. Причина в том, что этот код имеет неопределенную константу (bar), а не строку ('bar' - обратите внимание на кавычки). В будущем PHP может определять константы, которые, к сожалению, для такого кода, имеют одинаковые имена. Это работает, потому что PHP автоматически преобразует пустую строку (строку без кавычек, которая не соответствует ни одному известному символу) в строку, которая содержит пустую строку. Например, если нет определенной константы с именем bar, PHP подставит в строку 'bar' и будет использовать ее.

1 голос
/ 02 июня 2009

Имея обычное поле даты и времени, вы можете сделать это в запросе с помощью функции MySQL UNIX_TIMESTAMP ():

$posts = mysql_query("SELECT *
                             , UNIX_TIMESTAMP(Created)
                      FROM     Posts
                      ORDER BY Created DESC");

Вы также должны знать, что функция PHP mysql_fetch_array возвращает оба числовых ассоциативных ключа для результата запроса. Я считаю это излишним, поэтому мне нравится быть более конкретным и использовать:

$array = mysql_fetch_array($posts, MYSQL_ASSOC);

Кроме того, и, как указал @Paolo Bergantino, процитировать ваше эхо было бы хорошим решением:

echo $array['Created'];

Последний комментарий, который вы используете «SELECT *» - стоит прочитать обсуждение плюсов и минусов синтаксиса «SELECT *» .

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