Wie konvertiere ich MySQL-Zeit mit PHP in UNIX-Zeitstempel?

74

Es gibt viele Fragen zum UNIX-Zeitstempel zur MySQL-Zeit. Ich brauchte den umgekehrten Weg, ja ... Irgendeine Idee?

daGrevis
quelle

Antworten:

54

Sie können die UNIX_TIMESTAMPFunktion von mysql direkt aus Ihrer Abfrage heraus verwenden. Hier ein Beispiel:

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

Ebenso können Sie das Feld Datum / Datum / Uhrzeit übergeben:

SELECT UNIX_TIMESTAMP(yourField);
Sarfraz
quelle
Das wird nicht funktionieren, wenn das Feld ein TIME-Feld ist, nur DATE, DATETIME oder eine Zeichenfolge mit Tagen, Monaten und Jahren
Fabien Henon
11

Von einem meiner anderen Beiträge bekomme ich einen Unixtimestamp:

$unixTimestamp = time();

Konvertieren in das MySQL-Datetime-Format:

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

Erhalten eines MySQL-Zeitstempels:

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

Konvertieren in einen Unixtimestamp:

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

... es mit einem oder mehreren Zeitpunkten vergleichen, um festzustellen, ob der Benutzer eine realistische Zeit eingegeben hat:

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

Unix-Zeitstempel sind auch sicherer. Sie können Folgendes tun, um zu überprüfen, ob eine URL-übergebene Variable gültig ist, bevor Sie (zum Beispiel) die vorherige Bereichsprüfung überprüfen:

if(ctype_digit($_GET["UpdateTimestamp"]))
{...}
Florian Mertens
quelle
7
$time_PHP = strtotime( $datetime_SQL );
psycho brm
quelle
2
Eine Erklärung, warum dies die Frage beantwortet, würde die Antwort nützlicher machen. (Ich weiß, dass es wahrscheinlich viele andere einzeilige Antworten gibt, aber sie wurden nicht gerade hinzugefügt)
ChrisF
5
Die Frage war, wie man $ mysql_timestamp in $ php_timestamp konvertiert. Die Antwort lautet, dass "strtotime" dies wie gezeigt tut. Was gibt es zu erklären?
Psycho Brm
3

Anstelle von strtotimesollten Sie DateTimemit PHP verwenden. Sie können die Zeitzone auch folgendermaßen betrachten:

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

$mysqltimeist vom Typ MySQL Datetime, z 2018-02-26 07:53:00.

Kai Noack
quelle
1

Etwas abgekürzt könnte sein ...

echo date("Y-m-d H:i:s", strtotime($mysqltime));
Mintedsky
quelle
Fast wie ein Witz :)
AdR