3 回答

TA貢獻(xiàn)1798條經(jīng)驗(yàn) 獲得超7個(gè)贊
從你的問題來看,這不是很清楚,但如果我理解正確的話,你想要這個(gè):
SELECT *
FROM table
WHERE myDate LIKE concat('%', :start_day_of_year, '%')
AND myDate LIKE concat('%', :end_day_of_year, '%')
$users->whereRaw($sql, [
'start_day_of_year' => substr($fromDate, 5),
'end_day_of_year' => substr($toDate, 5),
]);

TA貢獻(xiàn)1875條經(jīng)驗(yàn) 獲得超3個(gè)贊
定義
來自:用戶輸入
至:用戶輸入
目標(biāo):數(shù)據(jù)庫(kù)字段
邏輯
您必須涵蓋 4 種情況:
逐年
>
變化不匹配,因?yàn)槟銢]有覆蓋一天。
年復(fù)一年
==
。(標(biāo)準(zhǔn))目標(biāo)必須是
>=
“從AND
” 目標(biāo)必須是<=
“到”。From-Year
+1
<
To-Year(From 相對(duì)于 To 超過 1 年)全部匹配,因?yàn)槟母采w時(shí)間超過一年
年復(fù)一年
+1
==
。(從去年相對(duì)于到)至
>=
從匹配所有內(nèi)容,因?yàn)槟辽俑采w了一整年。
目標(biāo)
>=
從OR
目標(biāo)<=
到匹配。
將所有內(nèi)容包裹在一起
NOT(1) AND (2 OR 3 OR (4 AND (4.1 OR 4.2 )))
預(yù)備課程
我們將日和月轉(zhuǎn)換為一個(gè)簡(jiǎn)單的數(shù)字,這樣比較很容易:
DATE_FORMAT('2000-01-01','%m%d')
將是0101
=>101
建筑模塊
從年份開始
DATE_FORMAT(?,'%Y')
到年度
DATE_FORMAT(?,'%Y')
從
DATE_FORMAT(?,'%m%d')
到
DATE_FORMAT(?,'%m%d')
目標(biāo)
DATE_FORMAT(myDate,'%m%d')
作為 SQL
-- 1
NOT(
DATE_FORMAT(?,'%Y') > DATE_FORMAT(?,'%Y')
)
AND
(
-- 2
(
DATE_FORMAT(?,'%Y') = DATE_FORMAT(?,'%Y')
AND
DATE_FORMAT(myDate,'%m%d') >= DATE_FORMAT(?,'%m%d')
AND
DATE_FORMAT(myDate,'%m%d') <= DATE_FORMAT(?,'%m%d')
)
OR
-- 3
(DATE_FORMAT(?,'%Y')+1) < DATE_FORMAT(?,'%Y')
OR
(
-- 4
(DATE_FORMAT(?,'%m%d')+1) = DATE_FORMAT(?,'%m%d')
AND
(
-- 4.1
DATE_FORMAT(?,'%m%d') >= DATE_FORMAT(?,'%m%d')
OR
-- 4.2
(
DATE_FORMAT(myDate,'%m%d') >= DATE_FORMAT(?,'%m%d')
OR
DATE_FORMAT(myDate,'%m%d') <= DATE_FORMAT(?,'%m%d')
)
)
)
)
參數(shù)
[$frm, $to, $frm, $to, $frm, $to, $frm, $to, $frm, $to, $to, $frm, $frm, $to]
您也許可以使用命名綁定。我不知道。(這將顯著縮短參數(shù))
不是測(cè)試 - 調(diào)試愉快:D

TA貢獻(xiàn)1797條經(jīng)驗(yàn) 獲得超4個(gè)贊
您可以使用此查詢
$FromDate = '2019-02-27';
$ToDate = '2020-06-26';
SELECT * FROM `tblname`
WHERE
DATE(myDate) BETWEEN '$FromDate' AND '$ToDate'
OR
DATE(myDate) BETWEEN '$ToDate' AND '$FromDate';
SELECT * FROM `tblname`
WHERE
DATE(myDate) BETWEEN '2019-02-27' AND '2020-06-26'
OR
DATE(myDate) BETWEEN '2020-06-26' AND '2019-02-27';
- 3 回答
- 0 關(guān)注
- 169 瀏覽
添加回答
舉報(bào)