簡體   English   中英

SQL最小化后比較兩個日期

[英]SQL Comparing two dates after minipulation

我有以下查詢。 其目的是查找訂購產品的時間,檢查它們是否符合當天的條件,然后提供列表。

AND ( 
    (NameType <> 'Salad' AND completeDate < DATE_FORMAT( NOW( ) , '%Y-%m-%d' ' 10:30:00' ) ) 
    OR 
    (NameType = 'Salad' AND ( 
        ( DATE_FORMAT( completeDate , '%h:%i:%s' ) <= '14:00:00' ) 
            AND DATE_ADD(DATE_FORMAT(completeDate,'%Y-(%m)-%d'), INTERVAL +1 DAY) < DATE_FORMAT(NOW(),'%Y-%m-%d')
        )
    )
    OR
    (NameType = 'Salad' AND ( 
        ( DATE_FORMAT( completeDate , '%h:%i:%s' ) > '14:00:00' )   
            AND DATE_ADD(DATE_FORMAT(completeDate,'%Y-(%m)-%d'), INTERVAL +2 DAY) < DATE_FORMAT(NOW(),'%Y-%m-%d')
        )
    )
)

邏輯:

If a Bagel is ordered before 10:30 it will arrive that day. If not it will arrive the next.

If a Salad is ordered before 14:00 it will arrive the next day. If after this, it will arrive in two working days. (是的,我對我來說似乎很瘋狂!)

因此,當前日期為2015-05-06

還有一張桌子

 |ID|NameType|  completeDate     |
 |1 |Salad   |2015-05-05 13:00:00|
 |2 |Salad   |2015-05-04 19:00:00|
 |3 |Bagel   |2015-05-05 08:00:00|
 |4 |Bagel   |2015-05-05 11:00:00|

應該輸出

 |ID|NameType|  completeDate     |
 |1 |Salad   |2015-05-05 13:00:00|
 |3 |Bagel   |2015-05-05 08:00:00|

但是,它忽略了色拉/ ID 1!

這是即時通訊比較日期的方式嗎? 想知道是否將它們轉換為字符串可能會有所幫助。

您在'14:00:00'使用24小時軍用時間,但在'%h:%i:%s'使用%h則是12個小時的常規時間(因此1:30 pm會顯示為'01:30:00' )。 像這樣格式化可能會有所幫助:

'%H:%i:%s'

問題與我如何比較兩個字符串有關。

DATE投放它們解決了該問題。

AND ( 
    (NameType <> 'Salad' AND completeDate < DATE_FORMAT( NOW( ) , '%Y-%m-%d' ' 10:30:00' ) ) 
    OR 
    (NameType = 'Salad' AND ( 
        ( DATE_FORMAT( completeDate , '%H:%i:%s' ) <= '14:00:00' ) 
            AND CAST(DATE_ADD(DATE_FORMAT(completeDate,'%Y-(%m)-%d'), INTERVAL +1 DAY) AS DATE) <= CAST(DATE_FORMAT(NOW(),'%Y-%m-%d') AS DATE)
        )
    )
    OR
    (NameType = 'Salad' AND ( 
        ( DATE_FORMAT( completeDate , '%H:%i:%s' ) > '14:00:00' )   
            AND CAST(DATE_ADD(DATE_FORMAT(completeDate,'%Y-(%m)-%d'), INTERVAL +2 DAY) AS DATE) <= CAST(DATE_FORMAT(NOW(),'%Y-%m-%d') AS DATE)
        )
    )
)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM