[英]ColdFusion 9 - SQL Statement - Boolean Logic
我已經把這個堵了。 這將是一個簡單的小數學邏輯問題。 但是對於我的一生,我無法使其正常運行。
試圖避免在預訂系統中重復預訂的東西。 當前代碼...
and schdate = #createODBCDate(schdate)#
and ( schstart >= #createODBCTime(stime)# and
actend <= #createODBCTime(actend)#
)
基本上嘗試進行檢查-如果說開始時間是日期的下午2點,結束於下午3點...我需要檢查我是否要預訂重疊的東西...說要在2:15 pm預訂...應該踢開支票說-沖突。
所以認為這是數學邏輯問題-而不是ColdFusion問題...今天只是一個大腦...
感謝潛在客戶-我想我可能已經知道了-仍在測試中...以下內容似乎有效。 開發鏈接提供了見解。
and schdate = #createODBCDate(schdate)#
and schstart < #createODBCTime(actend)#
and actend > #createODBCTime(stime)#
更新:
下面原始查詢的Merle_the_Pearl修訂版更加直觀。 基本上顛倒比較:
WHERE DateColumn = #RequestedDate#
AND StartTimeColumn < #RequestedEndTime#
AND EndTimeColumn > #RequestedStartTime#
我記得在該主題上看到了一個很棒的話題: 查找重疊的日期 。 (ASCII插圖很不錯:)。 假設您的預訂不會持續數天,那么一段時間也可以正常工作。
通常的方法是檢查每種類型的沖突:
該鏈接提到了一種更優雅的方法。 本質上,它將所有這些步驟簡化為一個過濾器。
WHERE FE >= SD and FS <= ED
如果找到匹配項,則說明存在沖突。 翻譯應該看起來像這樣(未經測試)。
SELECT Columns
FROM SomeTable
WHERE #RequestedEndTime# >= StartTimeColumn
AND #RequestedStartTime# <= EndTimeColumn
AND DateColumn = #RequestedDate#
注意:為了清楚起見,我特意省略了cfqueryparam
。 顯然,我建議您在實際查詢中使用它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.