2011-06-28 57 views
1

首先,在数据库中的条目:MySQL的时间/日期计算

enter image description here

我有写起始日期,起始时间和结束时间(以小时和分钟)的工作日加上午餐输入表单以分钟为单位(在示例中,dato = date,modetime =开始小时,modeminut =开始分钟,fyrtime =结束小时,fyrminut =结束分钟)。我需要做几个计算:

  • 首先计算日期时间字段modetid中的日期,开始时间和分钟。
  • 该做的几个小时和分钟类似的计算,但如果几个小时小于启动小时拉升的日期一天(可以称之为fyrtid)
  • 最后计算出fyrtid和modetid减去之间的区别暂停分钟。

它可以在数据库中直接自动完成(如果是的话)或者我需要一些PHP来做到这一点(如果是的话,又如何)?

我知道它是一个很高的顺序,但我一直无法找到关于日期/时间计算的很多信息,这些信息对我的低级知识很有意义。在MySQL或PHP中计算日期/时间的综合指南的任何链接也会受到欢迎。

+1

您使用的是什么版本的phpmyadmin的呢?它比我的更好 – dynamic

+1

我会建议在MySQL中使用datetime而不是date。这将允许您将所有数据存储在一个字段中,并使您的计算更容易,因为PHP和MySQL有许多方法来计算和差异,增加,减少等与完整的日期时间。 – Mikecito

+0

@ yes123 haha​​ha。 – dqhendricks

回答

0

我建议你用PHP函数上班时间()它是基于UNIX时间戳(如UNIX_TIMESTAMP()在MySQL)UNIX时间是这样的:1307387678. 使用您的形式开始的时间也为您的最终压延时间。 把()的设施什么的客户可以选择一天(小时和分钟)的时间,然后通过的strtotime隐蔽那些的Fileds到UNIX时间戳像下面的代码(设定日期格式MM/DD/YYYY):

$startdate = strtotime ("$_POST['calender_start'] $_POST['hour_start']:$_POST['minutes_start']" ); 
$enddate = strtotime ("$_POST['calender_end'] $_POST['hour_end']:$_POST['minutes_end']" ); 

变化你的数据库表字段为:cpr,startDate,endDate,暂停,晒太阳,.....

它非常灵活。 当你想获取特殊recorde你可以通过这个SQL读取行:

SELECT ...... FROM [TABLE_NAME] WHERE [VALUE] BETWEEN startDate AND endDate 

我希望它是有用的,你

+0

看起来应该是要走的路,如果我理解正确的话。但正如我所说,我几乎不了解PHP和MySQL。我试图破解一个Rapidweaver的自动表单生成器,所以我可能在任何地方都听错了语法。 – Anders

+0

...并把东西放在错误的地方。这是我的黑客:http://www.konferencer.nu/example.txt – Anders