Format PHP date () podczas wstawiania do datetime w MySQL
Jaki jest prawidłowy format do przekazania funkcji date()
w PHP, jeśli chcę wstawić wynik do kolumny typu MySQL datetime
?
Próbowałem date("Y-M-D G:i:s")
ale to tylko wstawia "0000-00-00 00: 00: 00" za każdym razem.
10 answers
Problem polega na tym, że używasz 'M'
i 'D'
, które są reprezentacją tekstową, MySQL oczekuje numerycznej reprezentacji formatu 2010-02-06 19:30:13
Spróbuj: date("Y-m-d H:i:s")
, który używa odpowiedników liczbowych.
Edit: switched G
to H
, chociaż może to nie mieć wpływu, prawdopodobnie chcesz użyć formatu 24-godzinnego z wiodącymi 0s.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-02-07 00:29:56
Z komentarzy php date()
strona podręcznika :
<?php $mysqltime = date ("Y-m-d H:i:s", $phptime); ?>
Miałeś poprawne " Y "- to pełny rok, ale " M "to trzy znakowy miesiąc, podczas gdy" m " to dwucyfrowy miesiąc. Ten sam problem z " D "zamiast " d". "G" jest 1 lub 2-cyfrową godziną, gdzie " H " zawsze ma wiodące 0 w razie potrzeby.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-02-07 00:29:59
Oto alternatywne rozwiązanie: jeśli masz datę w PHP jako znacznik czasu, obejdź obsługę jej za pomocą PHP i pozwól DB zająć się jej transformacją za pomocą funkcji FROM_UNIXTIME
.
mysql> insert into a_table values(FROM_UNIXTIME(1231634282));
Query OK, 1 row affected (0.00 sec)
mysql> select * from a_table;
+---------------------+
| a_date |
+---------------------+
| 2009-01-10 18:38:02 |
+---------------------+
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-02-07 00:56:46
Używam poniższego kodu PHP, aby utworzyć zmienną, którą wstawiam do kolumny DateTime MySQL.
$datetime = date_create()->format('Y-m-d H:i:s');
Utrzyma aktualną datę i godzinę serwera.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-06-25 11:00:28
$date_old = '23-5-2016 23:15:23';
//Date for database
$date_for_database = date ("Y-m-d H:i:s", strtotime($date_old));
//Format should be like 'Y-m-d H:i:s'`enter code here`
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-05-03 11:31:49
Formatowanie znacznika czasu do kolumny DateTime MySQL:
strftime('%Y-%m-%d %H:%M:%S',$timestamp);
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-08-31 11:09:41
Formatowanie DateTime MySQL z PHP
$date = "'".date('Y-m-d H:i:s', strtotime(str_replace('-', '/', $_POST['date'])))."'";
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-03-04 16:54:14
Używam tej funkcji (PHP 7)
function getDateForDatabase(string $date): string {
$timestamp = strtotime($date);
$date_formated = date('Y-m-d H:i:s', $timestamp);
return $date_formated;
}
Starsze wersje PHP (PHP
function getDateForDatabase($date) {
$timestamp = strtotime($date);
$date_formated = date('Y-m-d H:i:s', $timestamp);
return $date_formated;
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-07-15 22:27:48
Nie ma potrzeby używania metody date () z PHP, jeśli nie używasz znacznika czasu. Jeśli dateposted
jest kolumną datetime, możesz wstawić bieżącą datę w następujący sposób:
$db->query("INSERT INTO table (dateposted) VALUES (now())");
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-03-03 22:09:48
To doprowadza mnie do szału szukając prostej odpowiedzi. W końcu zrobiłem tę funkcję, która wydaje się przechwytywać wszystkie dane wejściowe i dawać dobry ciąg SQL, który jest poprawny lub przynajmniej poprawny i możliwy do sprawdzenia. Jeśli jest 1999-12-31 to prawdopodobnie jest źle, ale nie rzuci złego błędu w MySQL.
function MakeSQLDate($date) {
if (is_null($date)) {
//use 1999-12-31 as a valid date or as an alert
return date('Y-m-d', strtotime('1999-12-31'));
}
if (($t = strtotime($date)) === false) {
//use 1999-12-31 as a valid date or as an alert
return date('Y-m-d', strtotime('1999-12-31'));
} else {
return date('Y-m-d H:i:s', strtotime($date));
}
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-04-16 22:12:29