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...";
Hay varias opciones.
Puede convertirlo a marca de tiempo y usarlo como se indica en otras publicaciones con strtotime()
o usar la opción de análisis de fecha de MySQL
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";
}