将实际小时数(不是时间)插入MySQL

时间:2014-12-03 05:14:30

标签: php mysql

我试图通过表单字段将实际小时数而不是时间本身插入到MySQL数据库中。例如,

$time1 = '00:00';
$time2 = '27:20';
$time3 = '00:45';

所以我可以检索不同的行,并且可以在需要时动态计算。通过搜索查询甚至在系统的其他区域。

当我尝试添加以上三次时,它没有按照我要找的方式给出结果

$total = strtotime($time1) + strtotime($time2) + strtotime($time3);
echo date('H:i:s', $total);

结果

14:16:44

虽然它应该像

28:05:00

我在MySQL表中使用了TIME DATATYPE。我可以用作TEXT,但我也担心用户输入中发生的错误。我不必强迫用户插入任何特定格式,但他们可以按以下方式插入

27.20
27:20

1.5
1:30

我主要关心的是计算时间,用户输入可以是第二优先级,但如果可以实现则会很好。

无论如何,有没有想法或提示来实现这个目标?

2 个答案:

答案 0 :(得分:1)

date()需要UNIX格式的时间戳,即1970年1月1日00:00:00 UTC后的秒数(也是strtotime提供的值)

你传递的结果是自1970年1月1日起增加了一系列的时间,而不仅仅是加起来的时间,所以(就date而言)你正在生成一个随机的日期和时间,只打印时间(尝试打印$total的日期,看看你得到了什么。)

由于你的时间存储在数据库中,一种可能性是让MySQL自己处理时间计算,例如:

SELECT ADDTIME('00:00',ADDTIME('27:20','00:45'))

将导致“28:05:00”。您可以将数据库字段设置为TIME并直接通过SQL对其进行操作,并在PHP中将用户输入转换为可接受的TIME值。

答案 1 :(得分:0)

如果您只对小时和分钟感兴趣,为什么不将该值存储为整数?只需将小时数乘以60即可。

您可以在PHP中处理转换。

或者,您也可以轻松地使用两个(非常小的)int字段。