在我的工具中,用户可以设置他们的工作日(例如:星期一到星期五)。当他们保存设置时,它将存储在mysql用户表中。
在接下来的一周(本周),我将获得他们的“最后一个工作日”。在这种情况下,它将是星期五。如何使用mysql从每个用户那里获得最后一个工作日?
目前我将工作日保存在csv(2,3,4,5,6 - 2 =星期一......)但我可以改变它。
我尝试了WEEKDAY()的一些东西,但它不起作用。
有人能帮助我吗?
答案 0 :(得分:1)
DAYNAME(CONCAT('1970-09-2', SUBSTRING_INDEX(workdays, ',', -1)))
<强>解释强>
这个MySQL字符串函数SUBSTRING_INDEX
:
SUBSTRING_INDEX(workdays, ',', -1)
...会显示列出的最后一个工作日的编号。 (它的作用是查找逗号的所有位置,并在最后一个逗号后返回所有内容,例如SUBSTRING_INDEX('1,2,3', ',', -1)
返回3.)
DAYNAME(CONCAT('1970-09-2', dayIndex))
...给你一天的名字。 (由于DAYNAME
需要一个日期,因此该技术选择过去的日期,即星期日,结束于0,在本例中为1970-09-20
,并用返回的索引替换最后一位数,以确定相应的星期几,例如,20 =星期日,21 =星期一,等等。)
把它们放在一起:
SELECT DAYNAME(CONCAT('1970-09-2', SUBSTRING_INDEX(workdays, ',', -1))) AS lastday FROM ...
...您将获得lastday
变量中返回的工作日的相应名称。
答案 1 :(得分:0)
下面的sql查询可能会给你一些帮助。希望你只是要求这个。它将列出每个用户的最后一个工作日(friday
)。
SELECT * FROM tablename
WHERE user_id, workday_id IN
(SELECT user_id, MAX(workday_id) FROM tablename GROUP BY user_id );