从MySQL数据库获取datetime字段值

时间:2019-04-01 19:58:15

标签: php mysql sql datetime

我正在尝试从MySQL表中获取日期时间值。我像'yyyy-mm-dd hh:mm:ss'一样存储它,但是当我想使其打印在页面中时,我得到的是'2019-04-01 00:00:00'或仅'2019-04-01'。如果我检查数据库,可以看到时间存储正确,但是当我要打印它时,我只会得到零。

if( $stmt = $mysqli->prepare( '
    SELECT
        estadistica_id, 
        aprobados, 
        suspendidos, 
        pendientes, 
        envios, 
        fecha, 
        curso.curso_id, 
        identificador_envio, 
        curso.titulo AS titulo_curso
    FROM estadistica
    LEFT JOIN curso ON estadistica.curso_id = curso.curso_id
    ORDER BY titulo_curso ASC' . $order_by
) ) {
    if( true === $stmt->execute() ) {
        $stmt->store_result();
        $stmt->bind_result( 
            $estadistica_id, 
            $aprobados, 
            $suspendidos, 
            $pendientes, 
            $envios, 
            $fecha, 
            $curso_id, 
            $identificador_envio, 
            $titulo_curso 
        );
        if( ( $num_rows = $stmt->num_rows ) > 0 ) {
            while( $stmt->fetch() ) {
                echo $fecha;
            }
        }
        $stmt->free_result();
        $stmt->close();
    }
}

$ fecha打印'2019-04-01',仅此而已。我不知道如何打印存储在数据库中的日期和时间。

下面是数据库的屏幕快照,您可以在其中看到日期和时间已正确存储。

database1 database2

我迷路了:(

感谢您的全部帮助;)

2 个答案:

答案 0 :(得分:1)

正如R.Smith在他的评论中所说,如果您的列格式为varchar,它应该可以工作。您必须再有一个。

您可以使用DateTimehttps://www.php.net/manual/en/class.datetime.php

示例:

$date = new \DateTime($fecha);
echo $date->format('Y-m-d H:i:s');
// => 2019-04-01 18:42:03

答案 1 :(得分:1)

从数据库中获取datetime值时,默认格式取决于您的客户端。大多数客户端使用MySQL默认格式('YYYY-MM-DD HH24:MI:SS'),但看起来却不是。

一种解决方案是使用MySQL function DATE_FORMAT()将日期转换为SQL查询中具有预期格式的字符串:

考虑:

SELECT
    estadistica_id, 
    ..., 
    DATE_FORMAT(fecha, '%Y-%m-%d %H:%i:%s'),
    ...
FROM estadistica
...