Як перетворити час MySQL на мітку часу UNIX за допомогою PHP?


74

Є багато запитань, які задають "позначку часу UNIX у часі MySQL". Мені потрібен був зворотний шлях, так ... Будь-яка ідея?

Відповіді:


137

Використання strtotime(..):

$timestamp = strtotime($mysqltime);
echo date("Y-m-d H:i:s", $timestamp);

Також перевірте це (щоб зробити це способом MySQL.)

http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_unix-timestamp


5
Будьте обережні з часовими поясами, використовуючи strtotime. Дивіться це питання: stackoverflow.com/questions/10417179 / ...
Ерік Сістранд

55

Ви можете UNIX_TIMESTAMPвиконати функцію mysql безпосередньо з вашого запиту, ось приклад:

SELECT UNIX_TIMESTAMP('2007-11-30 10:30:19');

Аналогічним чином ви можете передати в поле дата / дата і час:

SELECT UNIX_TIMESTAMP(yourField);

Це не спрацює, якщо поле - це поле TIME, лише DATE, DATETIME або рядок із днями, місяцями та роками
Fabien Henon

11

З одного з моїх інших постів, отримуючи універсальний штамп:

$unixTimestamp = time();

Перетворення у формат дати та часу mysql:

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

Отримання мітки часу MySQL:

$mysqlTimestamp = '2013-01-10 12:13:37';

Перетворення його в одноразовий штамп:

$unixTimestamp = strtotime('2010-05-17 19:13:37');

... порівнявши його з одним або діапазоном разів, щоб побачити, чи ввів користувач реалістичний час:

if($unixTimestamp > strtotime("1999-12-15") && $unixTimestamp < strtotime("2025-12-15"))
{...}

Мітки часу Unix теж безпечніші. Ви можете зробити наступне, щоб перевірити, чи дійсна передана URL-адреса, перед тим, як перевірити (наприклад) попередню перевірку діапазону:

if(ctype_digit($_GET["UpdateTimestamp"]))
{...}

7
$time_PHP = strtotime( $datetime_SQL );

2
Деякі пояснення, чому це відповідає на запитання, зробить відповідь більш корисною. (Я знаю, що там, мабуть, багато інших відповідей у ​​один рядок, але їх не просто додали)
ChrisF

5
Питання полягало в тому, як перетворити $ mysql_timestamp у $ php_timestamp, відповідь полягає в тому, що "strtotime" робить це, як показано. Що тут пояснити?
psycho brm

4

Замість strtotimeвас слід використовувати DateTimeз PHP. Ви також можете розглянути часовий пояс таким чином:

$dt = DateTime::createFromFormat('Y-m-d H:i:s', $mysqltime, new DateTimeZone('Europe/Berlin'));
$unix_timestamp = $dt->getTimestamp();

$mysqltimeмає тип MySQL Datetime, наприклад 2018-02-26 07:53:00.


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.