AnswerBun.com

DATETIME en MySQL no registra correctamente la fecha

Stack Overflow en español Asked by Silvestre Silva on December 4, 2020

tengo el siguiente problema. Uso la librería datetimepicker para seleccionar una fecha en un formulario y registrarlo en la base de datos. El problema es que quiero registrar la fecha en el formato de MySQL pero no me registra la hora, es decir en el formulario selecciono el formato de esta manera 2017-09-28 11:32:34 pero en la base de datos solo me registra 2017-09-28 00:00:00

Cabe destacar que hice un var_dump en PHP y si me imprime la fecha con todo y hora seleccionada, entonces no entiendo porque me causa el error, comentar también que el tipo de dato que uso en MYSQL es el DATETIME

Informacion de las filas

Muestra el error(detalle)

//Seccion Insertar

if($page=='create'){
    if($_POST) {
        $validator = array('success' => false, 'messages' => array());
        if(isset($_SESSION['u_usuario']['PK_idUsuario'])){
            #Obtener el Usuario que inició sesion para saber quién está manipulando los tickets.
            $usuarioCreado = $_SESSION['u_usuario']['PK_idUsuario'];
            $fechaVencimiento = $_POST["fechaFinal"];

            $color = $_POST["colorNota"];
            $regDescripcion = $_POST["regDescripcion"];
            $status = 1;

            $sql="INSERT INTO recordatorio (fechaVencimiento, descripcion, status, color, FK_idUsuario) VALUES ('$fechaVencimiento','$regDescripcion','$status', '$color', '$usuarioCreado')";              
            $query = $con->query($sql);         
            var_dump($sql);

            if($query === TRUE ) {
                $validator['success'] = true;
                $validator['messages'] = "Recordatorio creado correctamente";               

            } else {
                $validator['success'] = false;
                $validator['messages'] = "Error al crear el recordatorio";                  
            }
        }else{
            $validator['success'] = false;
            $validator['messages'] = "Sesion caducada, recargue la página e inicie sesion nuevamente para registrar un nuevo recordatorio.";
        }

        $con->close();
        echo json_encode($validator);
    }
}


#Seccion Recuperar
else if($page=='read'){
    $output = array('data' => array());
    $query = $con->query("SELECT * FROM recordatorio WHERE status = 1 ORDER BY fechaVencimiento ASC");

    $x = 1;

    while ($row = $query->fetch_assoc()){
        #Almacenar los datos en el arreglo.
        $btnEvento ='
        <button data-toggle="modal" data-target="#modaleditarRecordatorio" type="button" class="btn btn-info btn-sm" title="Editar" onclick="editarRecordatorio('.$row['PK_idRecordatorio'].')"><i class="fa fa-pencil"></i></button>
        <button data-toggle="modal" data-target="#modaleliminarRecordatorio" type="button" class="btn btn-danger btn-sm" title="Eliminar" onclick="eliminarRecordatorio('.$row['PK_idRecordatorio'].')"><i class="fa fa-trash"></i></button>                
        ';


        $descripcion = '<p style="color:#0088cc">'.$row['descripcion'].'</p>';
        $output['data'][] = array(
            $x,
            $descripcion,
            $row['fechaInicio'],
            $row['fechaVencimiento'],
            $btnEvento
        );
    $x++;
    }
    $con->close();
    echo json_encode($output);
}

One Answer

El formato de fechas para un campo del tipo datetime en MySQL es:

AÑO-MES-DIA HORA:MINUTOS:SEGUNDOS

Por lo que tal como te sugiere Mario Alejandro Gonzalez Flore, debes formatear bien tu fecha para la inserción. En tu caso concreto sería cambiar la siguiente línea:

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

O bien si quieres dejar esa tarea a MySQL:

$fechaVencimiento = "STR_TO_DATE(".$_POST["fechaFinal"].", '%d/%m/%Y %H:%i:%s')";

Y en dónde dice "%d/%m/%Y %H:%i:%s" puedes especificar como tienes el formato original.

Decir también que no es buena idea colocar un POST directamente en la SQL sin tratar ya que existe la posibilidad de ataques de SQL Injection, te recomiendo ver el siguiente enlace:

¿Cómo evitar la inyección SQL en PHP?

Answered by track3r on December 4, 2020

Add your own answers!

Related Questions

Expresión regular para palabras en php

1  Asked on August 27, 2021 by carlos-valdes-web

   

mostrar solo los elementos true de un array

2  Asked on August 26, 2021 by fernando-cruz

   

como arreglar este stored procedure?

2  Asked on August 26, 2021 by luis

     

Ayuda con array tridimensional

1  Asked on August 26, 2021

   

Cards Bootstrap

1  Asked on August 26, 2021 by nat-najera

     

Inicialización: corchetes { }, asignación =, y otras formas

1  Asked on August 26, 2021 by federico-choy

 

Acceso a RowCommand aspx

1  Asked on August 26, 2021 by ledferoz10

       

¿Como recargar un div al enviar un formulario?

1  Asked on August 26, 2021 by jos-carlos-castillo

       

¿Donde inicializar una BD SQLite en Android?

2  Asked on August 26, 2021 by antonio-ruiz

     

Ask a Question

Get help from others!

© 2022 AnswerBun.com. All rights reserved. Sites we Love: PCI Database, MenuIva, UKBizDB, Menu Kuliner, Sharing RPP, SolveDir