Laravel RAW查询添加多列浮点值

时间:2017-09-18 07:50:48

标签: php laravel phpmyadmin

我将值存储到数据库中,如9:30和1(我的数据类型在此列的数据库中为float),当我检索到我无法添加两个数字时,它打印为10但必须是在10:30,我正在使用laravel添加这两列

     $get=DB::table('table_name')->select(DB::raw('sum(hours) AS hours'))
                                 ->get();

任何人都可以解决我的问题吗?

3 个答案:

答案 0 :(得分:2)

float适用于带逗号,的数字。您希望使用:保存时钟时间。

因此,您可以将时间转换为浮动数据,然后将其存储到数据库10:30 -> 10.5,然后将其总结为

$get=DB::table('table_name')->select(DB::raw('sum(hours) AS hours'))
                             ->first();
$hours = str_replace('.', ':', $get->hours);

这个解决方案并不是野兽,因为有更好的方法来处理日期,方法是将它们保存为日期对象而不是浮动日期。

另一种方法是使用smalldatetime而不是float来保存值。然后你可以节省时间,而不是你可以工作的数字。

答案 1 :(得分:1)

最好的办法是将数据类型从float更改为integer。通常在大多数编程和数据库级别中,浮点值存在问题,也可能导致精度问题。

所以我的建议是:

  • 以分钟为单位存储时间(或根据您的情况确定最少单位)
  • 检索它,然后将它除以60,然后你得到正确的值,而不采用hacky和不稳定的方法来解决它。

我希望这很有用。

答案 2 :(得分:0)

您可以在从db

中检索数据后执行此操作
$n1 = '9:30';
$timestamp = strtotime($n1);
echo date('H:i',strtotime('+1 hour',$timestamp));