第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

PHP 和 MySQL:僅比較日期字段中的月份和日期,而不考慮年份

PHP 和 MySQL:僅比較日期字段中的月份和日期,而不考慮年份

PHP
catspeake 2023-10-01 15:54:19
我有一個(gè)日期字段(myDate)。假設(shè)該字段具有以下日期:2015-01-01 2013-12-31如果用戶使用以下搜索參數(shù)搜索字段(myDate):開始日期: 2018-12-31 結(jié)束日期: 2019-01-05我希望查詢返回上面列出的 2015-01-01 和 2013-12-31 日期,因?yàn)樗鼈兾挥谟脩籼峤坏娜掌诜秶鷥?nèi)(當(dāng)涉及月份和日期時(shí))我嘗試了以下查詢:$listofUsers->whereRaw("DATE(CONCAT_WS('-',YEAR(NOW()),MONTH(myDate),DAY(myDate))) >= DATE(CONCAT_WS('-',YEAR(NOW()),MONTH(?),DAY(?)))",[$frm,$frm]); $listofUSers->whereRaw("DATE(CONCAT_WS('-',YEAR(NOW()),MONTH(myDate),DAY(myDate))) <= DATE(CONCAT_WS('-',YEAR(NOW()),MONTH(?),DAY(?)))",[$to,$to]);它對(duì)于同一年內(nèi)的日期非常有用,但如果提交的“起始日期”和“截止日期”位于兩個(gè)不同的年份并且“截止日期”月份小于“起始日期”月份,則它會(huì)失敗。任何想法如何使這項(xiàng)工作無論年份如何
查看完整描述

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), 

]);


查看完整回答
反對(duì) 回復(fù) 2023-10-01
?
翻過高山走不出你

TA貢獻(xiàn)1875條經(jīng)驗(yàn) 獲得超3個(gè)贊

定義

  • 來自:用戶輸入

  • 至:用戶輸入

  • 目標(biāo):數(shù)據(jù)庫(kù)字段

邏輯

您必須涵蓋 4 種情況:

  1. 逐年>變化

    不匹配,因?yàn)槟銢]有覆蓋一天。

  2. 年復(fù)一年==。(標(biāo)準(zhǔn))

    目標(biāo)必須是>=“從AND” 目標(biāo)必須是<=“到”。

  3. From-Year +1 <To-Year(From 相對(duì)于 To 超過 1 年)

    全部匹配,因?yàn)槟母采w時(shí)間超過一年

  4. 年復(fù)一年+1 ==。(從去年相對(duì)于到)

    1. >=

      匹配所有內(nèi)容,因?yàn)槟辽俑采w了一整年。

    2. 目標(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


查看完整回答
反對(duì) 回復(fù) 2023-10-01
?
繁星coding

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';


查看完整回答
反對(duì) 回復(fù) 2023-10-01
  • 3 回答
  • 0 關(guān)注
  • 169 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)