2015-10-13 131 views
2

「本週內」一個數據庫中,我想用下面的查詢:查詢日期

SELECT concat(firstname,' ', surname) AS 'Fname', 
MAX(CASE WHEN DAYOFWEEK(date) = 1 THEN concat(starttime,'-', endtime) END) `Sunday`, 
MAX(CASE WHEN DAYOFWEEK(date) = 2 THEN concat(starttime,'-', endtime) END) `Monday`, 
MAX(CASE WHEN DAYOFWEEK(date) = 3 THEN concat(starttime,'-', endtime) END) `Tuesday`, 
MAX(CASE WHEN DAYOFWEEK(date) = 4 THEN concat(starttime,'-', endtime) END) `Wednesday`, 
MAX(CASE WHEN DAYOFWEEK(date) = 5 THEN concat(starttime,'-', endtime) END) `Thursday`, 
MAX(CASE WHEN DAYOFWEEK(date) = 6 THEN concat(starttime,'-', endtime) END) `Friday`, 
MAX(CASE WHEN DAYOFWEEK(date) = 7 THEN concat(starttime,'-', endtime) END) `Saturday` 
FROM shifts NATURAL JOIN employees 
GROUP BY Fname, date 

不知怎麼修改它,只顯示本週的值,這樣的事情:

SELECT concat(firstname,' ', surname) AS 'Fname', 
MAX(CASE WHEN (DAYOFWEEK(date) = 1 AND WITHIN THIS WEEK) THEN concat(starttime,'-', endtime) END) `Sunday`, 
etc... etc... 

這可能通過mySQL?

+0

您是否考慮了BETWEEN語句的工作原理? – durbnpoisn

回答

0

問題是:你說的是哪一週?我將使用select語句的where標準部分來篩選期間,但是,您需要定義哪一週是您正在談論的內容。

  1. 使用之間......還有......如果你知道了一星期的確切起止日期:

    ...其中之間的日期......還有......

  2. 使用week()(或weekofyear())和year()函數來獲取單週的日期(請注意,開始每週的一天是可配置變量,詳情請參閱week()的鏈接):

    ...年(日期)= ...和星期(日期)= ...

  3. 與之前的邏輯相同,只需使用date_format()即可獲得年份和周的組合。