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

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

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

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

PHP
catspeake 2023-10-01 15:54:19
我有一個日期字段(myDate)。假設(shè)該字段具有以下日期:2015-01-01 2013-12-31如果用戶使用以下搜索參數(shù)搜索字段(myDate):開始日期: 2018-12-31 結(jié)束日期: 2019-01-05我希望查詢返回上面列出的 2015-01-01 和 2013-12-31 日期,因為它們位于用戶提交的日期范圍內(nèi)(當(dāng)涉及月份和日期時)我嘗試了以下查詢:$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]);它對于同一年內(nèi)的日期非常有用,但如果提交的“起始日期”和“截止日期”位于兩個不同的年份并且“截止日期”月份小于“起始日期”月份,則它會失敗。任何想法如何使這項工作無論年份如何
查看完整描述

3 回答

?
元芳怎么了

TA貢獻(xiàn)1798條經(jīng)驗 獲得超7個贊

從你的問題來看,這不是很清楚,但如果我理解正確的話,你想要這個:


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

]);


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

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

定義

  • 來自:用戶輸入

  • 至:用戶輸入

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

邏輯

您必須涵蓋 4 種情況:

  1. 逐年>變化

    不匹配,因為你沒有覆蓋一天。

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

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

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

    全部匹配,因為您的覆蓋時間超過一年

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

    1. >=

      匹配所有內(nèi)容,因為您至少覆蓋了一整年。

    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)換為一個簡單的數(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ù))


不是測試 - 調(diào)試愉快:D


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

TA貢獻(xiàn)1797條經(jīng)驗 獲得超4個贊

您可以使用此查詢


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


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

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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