我想使用以下查询:
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
并以某种方式修改它以仅显示THIS WEEKS值,如下所示:
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 :(得分:0)
问题是:你在谈论哪个星期?我会使用select语句的where标准部分来过滤这段时间,但是,你需要定义哪一周是你所谈论的那一周。
如果您知道一周的确切开始和结束日期,请在......和......之间使用:
... ......和...之间的日期
使用week()(或weekofyear())和year()函数获取一周的日期(请注意,一周的开始日期是一个可配置的变量,请参阅一周的链接( )详情):
...其中年份(日期)= ...和周(日期)= ...
与上一个逻辑相同,只需使用date_format()即可获得年份和星期组合。