如何在SQL中添加TIME格式字段并使用PHP正确显示它?

时间:2016-09-22 07:12:22

标签: php mysql sql

我尝试添加的SQL字段是TIME格式。

我的表看起来像这样: table example

我使用的代码看起来像这样:

<code>

$sql = mysql_query("SELECT sec_to_time(sum(durata)) as durata FROM invoiri WHERE inginer= '" . $inginer."' and data between  '" . $data1."' and  '" . $data2."'");                             
                $assoc = mysql_fetch_array($sql);
                    echo "Total time by ".$inginer." in period (".$data1.")-(".$data2.") is: ".$assoc[durata]." hours";}}
</code>

我得到的输出是“05:33:20”,应该是“02:00”

1 个答案:

答案 0 :(得分:0)

你几乎有正确的解决方案。问题是 durata 列也是一个TIME列,SUM()适用于整数而不是TIME。

要获得正确的结果,您可以使用:

$sql = mysql_query('SELECT SEC_TO_TIME(SUM(TIME_TO_SEC(`durata`))) AS `durata` FROM `invoiri` WHERE inginer= "' . $inginer. '" AND `data` BETWEEN "' . $data1 . '" AND "' . $data2 . '"';
$assoc = mysql_fetch_array($sql);
echo 'Total time by ' . $inginer . ' in period (' . $data1 . ')-(' . $data2 . ') is: ' . $assoc[durata] . ' hours';

此外,您可以改进一些有关代码的其他事项:

  1. 停止使用PHP的MySQL扩展。它已从PHP 5.5开始被弃用,并在PHP 7中被完全删除。相反,请查看MySQLiPDO

  2. 不要使用&#34;对于不使用字符串插值的字符串。你可以看到我如何取代你所有的&#34; (双引号)&#39; (单引号)。如果你只使用单引号,字符串处理会更快,因为PHP并不是每次都试图找到要插入的内容。

  3. 尝试让您的MySQL代码更有条理,并使用反引号作为列名,并将所有MySQL语法大写。我已经修改了您的代码作为示例。