在我的工具中,用户可以设置他们的工作日(例如:周一到周五)。当他们保存设置时,它将存储在 mysql 用户表中。
在下周(本周)我将得到他们的“最后一个工作日”。在这种情况下,它将是星期五。如何使用 mysql 获取每个用户的最后一个工作日?
目前,我将工作日保存在 csv 中(2,3,4,5,6 - 2 = 星期一...),但我可以更改它。
我用 WEEKDAY() 尝试了一些东西,但它不起作用。
有人可以帮我吗?
最佳答案
DAYNAME(CONCAT('1970-09-2', SUBSTRING_INDEX(workdays, ',', -1)))
说明:
这个 MySQL 字符串函数 SUBSTRING_INDEX
:
SUBSTRING_INDEX(workdays, ',', -1)
...将为您提供列出的最后一个工作日的编号。 (它的作用是找到所有有逗号的位置并返回最后一个逗号之后的所有内容,例如 SUBSTRING_INDEX('1,2,3', ',', -1)
返回 3。 )
这个技巧来自here ,使用DAYNAME
和 CONCAT
:
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
变量中返回的工作日的相应名称。
关于mysql - 获取上周最后 "active"天,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38187110/