2015-08-30 129 views
2

如果日期範圍(與開始和結束日期)在一個月(關於年),我試圖用sql檢查。月份和年份有變量(GET變量)。檢查日期範圍是否在月份(日曆)

這是我的表:

+----+------+-------+-----+ 
| id | name | start | end | 
+----+------+-------+-----+ 

因爲預約可能只是一個日期(開始和結束是在同一天),我要考慮這一點。

我查詢

SELECT 
    id, 
    name, 
    start, 
    end 
FROM appointments 
WHERE (MONTH(start) = ? AND YEAR(end) = ?) OR (MONTH(start) = ? AND YEAR(end) = ?) 
ORDER BY start 

與此查詢的問題是,它只是檢查之間並不是個月開始月和月末。例如,如果預約時間超過5個月,則此查詢失敗。

回答

3

如果你想知道某個特定月份是否在該範圍內,那麼我建議將日期轉換爲YYYYMM格式。這使得邏輯相對容易表達:

where ?*100 + ? between year(start)*100 + month(start) and 
         year(end)*100 + month(end) 
+0

如何將日期轉換爲YYYYMM?也許在像'DATE_FORMAT(start,'YYYYMM')AS start2'這樣的查詢中?但這不起作用。 – Bernd

+0

@Bernd。 。 。算術就是這樣。 。 。乘以年份100乘以月份。你也可以使用'date_format()',因爲這對字符串和數字都有效。 –

相關問題