有了这个,我想知道最适合的数据类型(在PHP和Oracle中)只存储时间数据.我不想储存日期组件;只有时间.
例如,说我有一个雇员实体,我想保存他/她典型的工作时间表.该员工可能在上午8:00至下午5:00工作.这些时代没有日期组件,那么应该用什么来存储它们并代表它们?
我考虑过的选项:
>作为字符串,具有标准格式(可能是24小时HH:MM:SS Z).
>在0 <= n <0的范围内的数字24,分数部分代表分钟/秒(无法存储时区信息?).
>作为PHP DateTime和Oracle DATE与归一化/未使用的日期组件,如0001-01-01.
>与上述相同,仅使用Unix时间戳(PHP整数和Oracle TIMESTAMP).
目前我使用#3以上,但是这让我感到好像我误以为这些数据类型.但是,它可以提供最好的可用性,就我所知.比较和排序所有的工作正如预期的PHP和Unix,时区数据可以维护,并没有真正需要特别的操作来显示数据.
我可以俯瞰任何东西,还是有更合适的方式?
如果您正在执行诸如重载计算工作时间的任务,则转换为十进制格式可能会在最终转换回到几分钟之前使计算更容易.当您从数据库获取数据时,可以编写一个简单的函数来转换十进制,将其转换为十进制,执行所有计算,然后将其运行回转换为时间格式.
当您计算日期时,使用unix时间戳很方便,但在计算时间时可能不太多.虽然使用这种方式似乎有一些积极性,例如很容易将时间戳添加到时间戳,但我发现必须将所有内容都转换为计算时间戳是令人讨厌的,所以我会避开这种情况.
所以,总结一下:
>如果要轻松存储,但不能操作数据,字符串可以
一种有效的方法.它们易于阅读和验证.为了任何东西
否则选择别的东西.
>计算数字使得超级容易的计算.兑换
时间/日期到十进制,做你所有的沉重的叮咬,然后恢复
一个实时格式和存储.
> PHP的Datetime和Oracle的Date都很方便,还有一些
神奇的功能内置到oracle和PHP中来操纵
数据,但即使最好的功能也可能比较困难,然后添加
一些小数在一起.我认为将数据存储在
日期格式的数据库可能是一个安全的想法 – 特别是如果
您希望根据查询中的列进行计算.
你计划在PHP里面做什么来决定你使用的方式
他们.
我会把蝙蝠之外的选项四出来.
编辑:我刚刚和朋友聊天有趣的时间类型.您应该注意的另一件事是,有时候基于时间的对象可能会导致比解决问题更多的问题.他正在研究一个应用程序,我们跟踪交货日期和时间.数据实际上存储在datetime对象中,但是这里是catch:卡车交付时间设置为特定的日期和发货窗口.一个可接受的交付是准时的,或者一段时间后.当一辆卡车在晚上11点半到达,45分钟后才出现,造成了一些破坏.虽然仍然在可接受的窗口内,它显示为第二天.另一个问题是在一个配送中心,实际上是从24小时开始的凌晨4点起.为工作人员设置工作时间 – 并将其合并到正常日期的支付证明是令人头痛的.