MySQL TIME与DECIMAL

问题描述 投票:0回答:1

我想存放在DB START timeEND time中。重要的只有hoursminutes,因此在表单中用户有4个下拉列表(start_time_hours,start_time_minutes,end_time_hours,end_time_minutes)。小时值 - [00-23],分钟 - [00,15,30,45]。最后我想从十进制中得到两个减法。

我想知道存储2个TIME字段(开始和结束时间)或2个DECIMAL字段会更好吗?

在这种情况下,分钟可以平滑地转换为十进制:[00 => 00,15 => 0.25,30 => 0.5,45 => 0.75],因此时间19:15将变为19.25。我想数据库存储方面也是一样的,因为TIME和DECIMAL(4,2)都占用了3个字节,如果我没错的话:)

因此,例如,在将数据保存到DB之后,我返回编辑表单并期望保存的值在这4个下拉列表中。如果DB数据是TIME类型,那么我应该使用类似的东西

$hours = date('G', strtotime($start_time)) && $minutes = date('i', strtotime($start_time))

对于START时间下拉菜单,但如果数据为DECIMAL,那么

$hours = floor($start_time); && $minutes = $start_time - $hours;

这两种方式中的哪一种会更快?

它可能是这两次之间的其他类型的计算,所以我想对于TIME类型数据的所有那些它将涉及date()或(和)strtotime()函数,但对于DECIMAL类型只有数学函数?那么,哪种解决方案最适合速度和数据库?也许这种情况有更好的解决方案?

我想DECIMAL的一个缺点是未来的scalabilty,如果我们决定让用户选择1-60的分钟,那么我们就不能在18:10获得精确的DECIMAL,因为它将是18.16666 ......

mysql
1个回答
0
投票

我推荐TIME类型。时间类型更有意义。也许十进制类型比TIME类型快一点。但是当你使用十进制时,你应该确保每个人都能在任何地方正确计算,而不仅仅是你的代码。我认为这比尺寸和速度更重要。

© www.soinside.com 2019 - 2024. All rights reserved.