表格值00:00:00成时间值

时间:2011-08-16 22:35:05

标签: php sql time

我很想知道,如果我通过javascript函数记录时间并说我让它保持2分20秒:

00.02.20

现在,当我将其插入到我的数据库中时,字段类型设置为时间,它没有正确记录。

我认为它来自我如何请求数据:

$length = mysql_escape_string($_REQUEST['timeDrive']);

有没有办法将其转换为输出确切值的时间:

00.02.20

感谢您的帮助!

2 个答案:

答案 0 :(得分:2)

不,不只是这样。

如果你让它变得更简单,你就可以计算javascript中的秒数。在您的数据库中,您可以将其保存为整数或其他内容。

另一种方法是将它保存为字符串,但是你无法比较时间。

好吧,我将它保存为整数,如果你想向某人显示时间,你必须先格式化它,如下所示:

function formatTime($seconds) {
    $hours = floor($seconds / 3600);        //by nickf
    $minutes = floor($seconds / 60) % 60; 
    $sec = $seconds % 60;
    $retHr = (strlen($hours) == 1 ? "0" . $hours : $minutes);
    $retMin = (strlen($minutes) == 1 ? "0" . $minutes : $minutes);
    $retsec = (strlen($sec) == 1 ? "0" . $sec : $sec);
    return $retHr . "." . $retMin . "." . $retsec;
}

//now you counted one hour, two minutes and three seconds, you call it like 
echo formatTime(3723);
//... and it outputs "01.02.03"

答案 1 :(得分:2)

如果您不需要对这些字段执行任何数学函数(例如:求和,平均等),并且它纯粹用于显示,那么您只需将其作为纯文本存储在CHAR(8)字段中

否则,您需要将其标准化为某种单位。我建议可能作为总秒数的整数(如果这对你来说足够准确)。

转换为秒:

 $val = "00.02.20";
 $parts = explode(".", $val);   // ['00', '02', '20']
 $totalSeconds = parts[0] * 3600 + parts[1] * 60 + parts[2]; // 140

并将其转换回来:

$seconds = 140; // this would be read from the database, or something

printf("%02d.%02d.%02d",
    $seconds / 3600,
    ($seconds / 60) % 60,
    $seconds % 60
);