我已經被賦予修復一個非常混亂的代碼,我們的客戶之一由一個狡猾的自由職業者寫的任務....我不是非常熱衷於重寫整個事情,因爲它已經被使用了一段時間,它的唯一真正的問題是現在當他們要求另一個功能時。數據庫被程序的各種其他部分利用,這個功能只是整個系統的一小部分。在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