我在我的數據庫中有幾條記錄,該表有一個名爲「weekday」的列,我在這裏存儲了一個像「mon」或「fri」這樣的工作日。現在從前端用戶搜索發佈到服務器的參數是startday和endDay。檢索兩個工作日之間的數據庫記錄
現在我想檢索startDay和endDay之間的所有記錄。我們可以假設startDay是「mon」,endDay是「sun」。我目前不知道如何做到這一點。
我在我的數據庫中有幾條記錄,該表有一個名爲「weekday」的列,我在這裏存儲了一個像「mon」或「fri」這樣的工作日。現在從前端用戶搜索發佈到服務器的參數是startday和endDay。檢索兩個工作日之間的數據庫記錄
現在我想檢索startDay和endDay之間的所有記錄。我們可以假設startDay是「mon」,endDay是「sun」。我目前不知道如何做到這一點。
創建另一個表格,其中包含日期和相應編號的名稱。然後,您只需要按名稱將當前表與天表結合起來,然後使用該表中的數字進行查詢。
不完全實用,但可以使用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)
好吧,我不知道你的應用程序的架構,因爲我認爲存儲和查詢一週的字符串是不合適的,但我可以告訴你一個解決這個問題的方法。 做一個輔助函數,返回你平日的數組範圍內,即
function getWeekDaysArray($startWeekDay, $endWeekDay) {
returns $daysArray['mon','tue','wed'];
}
$daysRangeArray = getWeekDaysArray('mon', 'wed');
現在有了這個數組,你可以在表中查詢
DB::table('TableName')->whereIn('week_day', $daysRangeArray)->get();
希望這有助於
這甚至沒有編譯。 –
用數字代替「週一,週二......」這樣你就可以做一個範圍調用並獲得這些。所以如果你把1作爲星期一,2作爲星期二等,並且想要在星期一和星期五之間得到,你可以在星期幾大於或等於1且小於或等於5時進行呼叫。存儲星期一或星期五或星期五或其他什麼是非常不直觀的,如果你想要使用這些數據彙總數據 – khuderm
我同意,這似乎更簡單,謝謝:D – user3718908
雖然將它打開,仍然需要答案,可能需要稍後的解決方案。 – user3718908