我想设置一个函数来自动将预定义的班次插入到计划表中。我创建了一个名为shift_times
的表,它存储了每种不同班次类型所需的开始/结束时间:
| start_time | lunch_start | lunch_end | end_time |
| 8:30am | 12:00pm | 12:45pm | 4:30pm |
由于开始和结束时间并非特定于任何日期,因此我不确定要用于此列的最佳数据类型。
我玩过的一个想法是使用Double,小数点后存储分钟。上面的表格如下所示:
| start_time | lunch_start | lunch_end | end_time |
| 8.5 | 12 | 12.75 | 16.5 |
该计划专门以15分钟的粒度工作,因此小数将始终舍入到最接近的0.25,并且它应该是一种非常简单的格式转换为和(并且易于作为JSON发送)。
但是,我不确定是否可以通过更详细的数字格式(例如,自午夜以来的分钟数)或者忽略日期部分的实际日期/时间字段来更好地服务。
答案 0 :(得分:0)
不要试图使用双打来解决这类问题,因为它们看起来很方便。
稍微了解为什么不应该使用双打来存储金钱价值。同样的论点适用于时代。
您建议在0000之后的整数分钟可能是一个很好的起点。
答案 1 :(得分:0)
Oracle支持INTERVAL DAY TO SECOND
数据类型;其他一些例如DB2支持TIME
数据类型,其中没有隐含日期部分。
如果这些都不可用,我个人会在午夜后使用秒或分钟使用整数类型,但不会使用小数小时。
答案 2 :(得分:0)
SQl Server也有时间数据类型。