mysql - 获取上周最后 "active"天

标签 mysql weekday

在我的工具中,用户可以设置他们的工作日(例如:周一到周五)。当他们保存设置时,它将存储在 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 ,使用DAYNAMECONCAT :

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/

相关文章:

mysql - 使用 RegEx 查找包含超过 N 个分号的行

php 将工作日转换为日期

ios - 如何在CollectionView中快速设置从周一到周六的工作日日期

mysql - character_set_connection 的目的是什么?

mysql - 如何在 SQL 中执行条件插入

mysql - 从行中为每个外键选择最大数据

ruby-on-rails - Rails - 确定星期几

sql - PLSQL - 如何查找给定日期的星期一和星期五

sql - 为给定月份生成一系列周间隔

java - JPA-连接非实体类中的两个表