从选择查询中检索日期数据

时间:2016-01-14 13:30:44

标签: php mysql

我从数据库中选择并在表格中回显结果。在我将一个列数据类型从varchar更改为date之前,一切正常。我的第一个查询(当列Date_PP数据类型为varchar时)是:

$queryitem = "SELECT Date_PP, Com, Doc, Place, p1, p2, p3, p4, p5, p6, p7, p8 
              FROM MyTable 
              WHERE Com>=12 
              ORDER BY Date_PP ";

没问题,但是Date_PP是一个字符串,而不是真实的日期数据。将db列从varchar更改为date后,我将查询修改为:

$queryitem = "SELECT Date_PP, Com, Doc, Place, p1, p2, p3, p4, p5, p6, p7, p8, 
              DATE_FORMAT(Date_PP, '%Y-%m-%d') AS Date_PP 
              FROM MyTable 
              WHERE Com>=12
              ORDER BY Date_PP ";

完整的代码是:

$queryitem = "SELECT Date_PP, Com, Doc, Place, p1, p2, p3, p4, p5, p6, p7, p8, 
              DATE_FORMAT(Date_PP, '%Y-%m-%d') AS Date_PP
              FROM MyTable
              WHERE Com>=12
              ORDER BY Date_PP ";
if ($result = $link->query($queryitem))  {
    if ($success = $result->num_rows > 0) {
        $ac=0;
        while ($row = $result->fetch_row()) {
            echo "<tr>";
            echo "<td > ".$row[1]." ".$row[2]."</td>";
            echo "<td > ".$row[3]."</td>";
            if ($row[0]=="" or isnull($row[0])) {
                echo "<td > not yet </td>";
            }
            else {
                echo "<td> ".$row[0]." </td>";
            }
            for ($i = 4; $i <= 11; $i++) {
                echo "<td >".$row[$i]."</td>";
            }
            echo "</tr>";
        }
    }
}

但现在我无法回应结果。当回显$row[0]时代码停止。我的猜测是日期数据不再是&#34;放置&#34;在$row[0],但无法使其发挥作用。任何人都可以发现问题吗?

1 个答案:

答案 0 :(得分:1)

您更改了列的类型。如果列的内容与新类型不兼容,则将其删除,可能是null或其他适当的“零值”。你已经破解了你的数据。希望你有一个备份!

对于记录,date列的行为类似于YYYY-MM-DD格式的字符串值。你给它,它以内部格式存储它,并返回该格式。你不需要在那里做任何事情。