2016-12-15 45 views
0

我在我的數據庫中有幾條記錄,該表有一個名爲「weekday」的列,我在這裏存儲了一個像「mon」或「fri」這樣的工作日。現在從前端用戶搜索發佈到服務器的參數是startday和endDay。檢索兩個工作日之間的數據庫記錄

現在我想檢索startDay和endDay之間的所有記錄。我們可以假設startDay是「mon」,endDay是「sun」。我目前不知道如何做到這一點。

+2

用數字代替「週一,週二......」這樣你就可以做一個範圍調用並獲得這些。所以如果你把1作爲星期一,2作爲星期二等,並且想要在星期一和星期五之間得到,你可以在星期幾大於或等於1且小於或等於5時進行呼叫。存儲星期一或星期五或星期五或其他什麼是非常不直觀的,如果你想要使用這些數據彙總數據 – khuderm

+0

我同意,這似乎更簡單,謝謝:D – user3718908

+0

雖然將它打開,仍然需要答案,可能需要稍後的解決方案。 – user3718908

回答

0

創建另一個表格,其中包含日期和相​​應編號的名稱。然後,您只需要按名稱將當前表與天表結合起來,然後使用該表中的數字進行查詢。

0

不完全實用,但可以使用MySQL將sun,mon,tue轉換爲數字。

設置一個靜態的一年,週數像201610爲今年的第10周,然後用DATE_FORMAT的結合STR_TO_DATE:

DATE_FORMAT(STR_TO_DATE('201610 mon', '%X%V %a'), '%w') 
DATE_FORMAT(STR_TO_DATE('201610 sun', '%X%V %a'), '%w') 
DATE_FORMAT(STR_TO_DATE('201610 tue', '%X%V %a'), '%w') 

這3個報表將分別計算爲0,1,2。

這是做的是%a格式(週日至週六)轉換爲%w格式最主要的(0-6)

-1

好吧,我不知道你的應用程序的架構,因爲我認爲存儲和查詢一週的字符串是不合適的,但我可以告訴你一個解決這個問題的方法。 做一個輔助函數,返回你平日的數組範圍內,即

function getWeekDaysArray($startWeekDay, $endWeekDay) { 
    returns $daysArray['mon','tue','wed']; 
} 

$daysRangeArray = getWeekDaysArray('mon', 'wed'); 

現在有了這個數組,你可以在表中查詢

DB::table('TableName')->whereIn('week_day', $daysRangeArray)->get();

希望這有助於

+0

這甚至沒有編譯。 –

相關問題