Подтвердить что ты не робот

Преобразовать дату php в формат mysql

У меня есть поле даты в php, которое использует этот код:

$date = mysql_real_escape_string($_POST['intake_date']);

Как мне преобразовать это в формат MySql 0000-00-00 для включения в db. Является ли это по строкам: date ('Ymd' strtotime ($ date). Причина, о которой я прошу, заключается в том, что я пробовал варианты этого, и я не могу заставить его работать. Либо отображается как 1970, либо какой-то другой вариант из этого. Большое спасибо

4b9b3361

Ответ 1

$date = mysql_real_escape_string($_POST['intake_date']);

1. Если ваш столбец MySQL DATE введите:

$date = date('Y-m-d', strtotime(str_replace('-', '/', $date)));

2. Если в столбце MySQL DATETIME введите:

$date = date('Y-m-d H:i:s', strtotime(str_replace('-', '/', $date)));

Вам не нужно работать strototime(), потому что он не будет работать с разделителями dash -, он попытается сделать вычитание.


Обновить, так как ваша дата отформатирована, вы не можете использовать strtotime(), вместо этого используйте этот код:

$date = '02/07/2009 00:07:00';
$date = preg_replace('#(\d{2})/(\d{2})/(\d{4})\s(.*)#', '$3-$2-$1 $4', $date);
echo $date;

Вывод:

2009-07-02 00:07:00

Ответ 2

У этого сайта есть два довольно простых решения - просто проверьте код, я предоставил описания на случай, если вы захотите, - сэкономит вам несколько кликов.

http://www.richardlord.net/blog/dates-in-php-and-mysql

1. Одним из распространенных решений является сохранение дат в полях DATETIME и использование функций date() и strtotime() PHP для преобразования между метками времени PHP и MySQL DATETIME. Методы будут использоваться следующим образом:

$mysqldate = date( 'Y-m-d H:i:s', $phpdate );
$phpdate = strtotime( $mysqldate );

2. Наш второй вариант - позволить MySQL выполнять эту работу. У MySQL есть функции, которые мы можем использовать для преобразования данных в тот момент, когда мы обращаемся к базе данных. UNIX_TIMESTAMP будет конвертировать из DATETIME в временную метку PHP, а FROM_UNIXTIME будет конвертировать из временной метки PHP в DATETIME. Методы используются в SQL-запросе. Поэтому мы вставляем и обновляем даты с помощью таких запросов, как это -

$query = "UPDATE table SET
    datetimefield = FROM_UNIXTIME($phpdate)
    WHERE...";
$query = "SELECT UNIX_TIMESTAMP(datetimefield)
    FROM table WHERE...";

Ответ 3

Вы ищете функции MySQL FROM_UNIXTIME() и UNIX_TIMESTAMP().

Используйте их в своем SQL, например:

mysql> SELECT UNIX_TIMESTAMP(NOW());
+-----------------------+
| UNIX_TIMESTAMP(NOW()) |
+-----------------------+
|            1311343579 |
+-----------------------+
1 row in set (0.00 sec)

mysql> SELECT FROM_UNIXTIME(1311343579);
+---------------------------+
| FROM_UNIXTIME(1311343579) |
+---------------------------+
| 2011-07-22 15:06:19       |
+---------------------------+
1 row in set (0.00 sec)

Ответ 4

Если значение_задачи - некоторый общий формат даты, вы можете использовать date() и strtotime()

$mysqlDate = date('Y-m-d H:i:s', strtotime($_POST['intake_date']));

Однако это будет работать, только если формат даты принят strtotime(). См. страницу doc для поддерживаемых форматов.

Ответ 5

Если у вас есть дата в формате dd/mm/yyyy, используйте следующую команду:

$date = explode('/', $_POST['posted_date']);
$new_date = $date[2].'-'.$date[1].'-'.$date[0];

Если у вас это в мм/дд/гггг, просто измените вторую строку:

$new_date = $date[2].'-'.$date[0].'-'.$date[1];

Ответ 6

function my_date_parse($date)
{
        if (!preg_match('/^(\d+)\.(\d+)\.(\d+)$/', $date, $m))
                return false;

        $day = $m[1];
        $month = $m[2];
        $year = $m[3];

        if (!checkdate($month, $day, $year))
                return false;

        return "$year-$month-$day";
}

Ответ 8

Если вы знаете формат даты в $_POST [incoming_date], вы можете использовать explode для получения года, месяца и времени, а затем объединить, чтобы сформировать действительную дату mySql. например, если вы получаете что-то вроде 12/15/1988 в день, вы можете сделать это следующим образом

    $date = explode($_POST['intake_date'], '/');
    mysql_date = $date[2].'-'$date[1].'-'$date[0];

хотя если у вас есть действительная дата даты ('y-m-d', strtotime ($ date)); также должны работать

Ответ 9

PHP 5.3 имеет функции для создания и переформатирования объекта DateTime из любого формата, который вы указываете:

$mysql_date = "2012-01-02";   // date in Y-m-d format as MySQL stores it
$date_obj = date_create_from_format('Y-m-d',$mysql_date);
$date = date_format($date_obj, 'm/d/Y');
echo $date;

Выходы:

01/02/2012

MySQL также может управлять форматированием с помощью функции STR_TO_DATE() при вставке/обновлении и DATE_FORMAT() при запросе.

$php_date = "01/02/2012";
$update_query = "UPDATE `appointments` SET `start_time` = STR_TO_DATE('" . $php_date . "', '%m/%d/%Y')";
$query = "SELECT DATE_FORMAT(`start_time`,'%m/%d/%Y') AS `start_time` FROM `appointments`";