strtodate fecha day convertir php mysql

php - fecha - strtotime to date



convertir la fecha de php a formato mysql (9)

Donde tenga una fecha publicada en el formato dd / mm / aaaa, use lo siguiente:

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

Si lo tiene en mm / dd / aaaa, simplemente cambie la segunda línea:

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

Tengo un campo de fecha en php que está usando este código:

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

¿Cómo convierto esto al formato MySql 0000-00-00 para su inclusión en db. ¿Está en la línea de: date (''Ymd'' strtotime ($ date);. La razón por la que pregunto es porque he intentado variaciones de esto y parece que no puedo hacerlo funcionar. O bien aparece como 1970 o alguna otra variación de eso. Muchas gracias


Está buscando las funciones de MySQL FROM_UNIXTIME() y UNIX_TIMESTAMP() .

Úselos en su SQL, por ejemplo:

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)


Este sitio tiene dos soluciones bastante simples: simplemente verifique el código, proporcioné las descripciones en caso de que las desee, le ahorra algunos clics.

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

1.Una solución común es almacenar las fechas en los campos DATETIME y usar las funciones PHPs date () y strtotime () para convertir entre marcas de tiempo de PHP y DATETIMEs de MySQL. Los métodos se usarían de la siguiente manera:

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

2. Nuestra segunda opción es dejar que MySQL haga el trabajo. MySQL tiene funciones que podemos utilizar para convertir los datos en el punto donde accedemos a la base de datos. UNIX_TIMESTAMP convertirá de DATETIME a PHP timestamp y FROM_UNIXTIME convertirá de PHP timestamp a DATETIME. Los métodos se usan dentro de la consulta SQL. Así que insertamos y actualizamos las fechas usando consultas como esta -

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



PHP 5.3 tiene funciones para crear y reformatear en el objeto DateTime desde cualquier formato que especifique:

$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;

Productos:

01/02/2012

MySQL también puede controlar el formateo utilizando la función STR_TO_DATE() al insertar / actualizar, y el DATE_FORMAT() al realizar consultas.

$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`";


Si conoce el formato de la fecha en $ _POST [intake_date], puede usar explode para obtener el año, el mes y la hora, y luego concatenar para formar una fecha mySql válida. por ejemplo, si obtiene algo así como el 15/12/1988 en la fecha, puede hacer esto

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

aunque si tiene una fecha de fecha válida (''ym-d'', strtotime ($ date)); también debería funcionar


Si intake_date es un formato de fecha común, puede usar date() y strtotime()

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

Sin embargo, esto solo funcionará si el formato de fecha es aceptado por strtotime() . Ver su página doc para formatos compatibles.


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

1. Si su columna MySQL es tipo DATE :

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

2. Si su columna MySQL es DATETIME tipo:

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

No tienes que trabajar con strototime() , porque no funcionará con los separadores de guiones, intentará hacer una resta.

Actualice , la forma en que su fecha está formateada no puede usar strtotime() , use este código en su lugar:

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

Salida:

2009-07-02 00:07:00


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"; }