你有一個startdate
和enddate
爲表中的每一行,如果我正確地理解你的要求,你要顯示滿足所有這些行這些標準。
WHERE enddate >= start of week
AND startdate < start of next week
你已經在你的表startdate
和enddate
。這個答案假設每行的enddate被限制爲大於或等於starttdate。如果不是,你會得到奇怪的結果。
您需要一個MySQL表達式來計算本週的第一天。以下是你如何做到這一點。
FROM_DAYS(TO_DAYS(CURDATE()) -MOD(TO_DAYS(CURDATE()) -1, 7))
該表達式產生緊接在CURDATE()
之前的星期日。如果您的星期被認爲是星期一開始,請改用此代碼(請注意-2
)。
FROM_DAYS(TO_DAYS(CURDATE()) -MOD(TO_DAYS(CURDATE()) -2, 7))
這些是非常有用的表達式,因爲它們會產生實際的日期。然後這些日期可以通過日期算術操作,例如somedate + INTERVAL 7 DAY
,它可以方便地在一週後給出日期。這種算術甚至可以在上個星期和第一個星期的一個日曆年裏工作。
把它放在一起,這是你要做的選擇你想要的記錄。
WHERE enddate >= FROM_DAYS(TO_DAYS(CURDATE())-MOD(TO_DAYS(CURDATE())-1,7))
AND startdate < FROM_DAYS(TO_DAYS(CURDATE())-MOD(TO_DAYS(CURDATE())-1,7))
+ INTERVAL 7 DAY
這將從您的表中獲取與當前星期相關的記錄。
可以試試我的帖子? – 2014-09-05 11:25:10