我已经被赋予修复一个非常混乱的代码,我们的客户之一由一个狡猾的自由职业者写的任务....我不是非常热衷于重写整个事情,因为它已经被使用了一段时间,它的唯一真正的问题是现在当他们要求另一个功能时。数据库被程序的各种其他部分利用,这个功能只是整个系统的一小部分。在php中删除时间从mysql字段中查询mysql的查询
本质上,该脚本的目的是管理虚拟办公室中的所有会议。 他们需要一个页面来显示“当前”会议。这是原始查询。
$CURRENT_TIME=date("Gi");
mysql_connect(localhost,$USERNAME,$PASSWORD);
@mysql_select_db($DATABASE) or die("Unable to select database");
$query="SELECT * FROM ROOM_1 WHERE
EVENT_ROOM LIKE'%$URLROOMNAME%'
AND EVENT_YEAR='$CURRENT_YEAR'
AND EVENT_MONTH='$CURRENT_MONTH'
AND EVENT_DATE='$CURRENT_DATE'
AND START_TIME<='$CURRENT_TIME'
AND END_TIME>='$CURRENT_TIME' ";
$result=mysql_query($query);
$num=mysql_numrows($result);
mysql_close();
时间存储在mysql表中作为24小时值在int字段中。例如3:43 pm简单地存储为1543. 新的要求是为了能够获得设置时间限制的会议。 的自由职业者......“巧妙”的解决方案是另一种的int字段添加到表并更改该行
AND START_TIME<='$CURRENT_TIME'
到..
AND (START_TIME-APPEAR_START_TIME)<='$CURRENT_TIME'
现在,虽然它可以用于一些会议,它不会工作对于其他人来说,例如,开始于1405的会议以20分钟的设置允许时间将导致1385 ...
因此,我正在寻找一个聪明的解决方案,允许我独自离开休息,只需从中减去APPEAR_START_TIME字段曲目中的$ START_TIME列但只有几分钟。
任何想法?
难道你不能只编写一个脚本来用真正的START和END日期时间列替换所有这些列吗?然后,您可以编写查询,而不需要所有的黑客。 – 2011-02-05 05:55:42
我不明白,他们要求一个新的功能,并在过程中发现数据库设计不佳?这非常不规范。抛开讽刺,人们通常称之为“技术债务”:必须做更多的工作来修改原本只是一个快速修复的东西。 – 2011-02-05 06:16:33
虽然我同意,但这并不完美,不值得花时间修复它。正如它发生的那样,我们正在使用一个设计合理的数据库来处理v2! – Alex 2011-02-05 06:36:27