Используя jQuery, вы можете вызвать click()
, чтобы имитировать щелчок.
Проблема в том, что вы используете 'M'
и 'D'
, которые являются текстовыми представлениями, MySQL ожидает числовое представление формата 2010-02-06 19:30:13
Try: date("Y-m-d H:i:s")
, который использует числовые эквиваленты.
edit: переключился G
на H
, хотя он может и не повлиять, вы, вероятно, захотите использовать 24-часовой формат с ведущими 0.
Нет необходимости использовать метод date () из PHP, если вы не используете временную метку. Если dateposted
- столбец datetime, вы можете вставить текущую дату следующим образом:
$db->query("INSERT INTO table (dateposted) VALUES (now())");
Отметьте временную метку для столбца MySQL DATETIME:
strftime('%Y-%m-%d %H:%M:%S',$timestamp);
$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`
Это сводило меня с ума, ища простой ответ. Наконец, я сделал эту функцию, которая, кажется, улавливает все данные и дает хорошую строку SQL, которая является правильной или, по крайней мере, действительной и проверяемой. Если это 1999-12-31, это, вероятно, неверно, но не приведет к ошибке в 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));
}
}
Вот альтернативное решение: если у вас есть дата в PHP как временная метка, обход, обрабатывающий ее с помощью PHP, и пусть DB позаботится о ее преобразовании с помощью функции 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 |
+---------------------+
Я использую эту функцию (PHP 7)
function getDateForDatabase(string $date): string {
$timestamp = strtotime($date);
$date_formated = date('Y-m-d H:i:s', $timestamp);
return $date_formated;
}
Старые версии PHP (PHP & lt; 7)
function getDateForDatabase($date) {
$timestamp = strtotime($date);
$date_formated = date('Y-m-d H:i:s', $timestamp);
return $date_formated;
}
function getDateForDatabase(string $date) : string {
to function getDateForDatabase($date) {
Почему объявления типа выдают ошибку, я не знаю достаточно PHP, чтобы сказать.
– Chris Pink
28 July 2017 в 09:10
Я использую следующий код PHP для создания переменной, которую я вставляю в столбец DATETIME MySQL.
$datetime = date_create()->format('Y-m-d H:i:s');
Это будет содержать текущую дату и время сервера.
Формат MySQL datetime с PHP
$date = "'".date('Y-m-d H:i:s', strtotime(str_replace('-', '/', $_POST['date'])))."'";
Из комментариев справочной страницы php date()
:
<?php $mysqltime = date ("Y-m-d H:i:s", $phptime); ?>
У вас был «Y» правильный - это полный год, но «M» - это три символа месяца, а «м» - двухзначный месяц. Такая же проблема с «D» вместо «d». «G» - это 1 или 2-значный час, где «H» всегда имеет преимущество 0 при необходимости.