如何获取mysql中两个日期之间的时间记录?

2023-12-31

我正在制作一个考勤系统,它包含两个日期之间的时间表,例如(晚上 10:00 到凌晨 3:00)。如何从 mysql 数据库中检索时间范围在 2 个日期之间的行?

我已经知道如何在 mysql 中使用 BETWEEN ,我的问题是如何在不知道确切时间范围的情况下查询 mysql ?因为它可能是任何类似的东西(晚上 11:00 到凌晨 4:00)

我使用3张表: time_tbl:存储有关员工时间表的信息(例如晚上 10 点到凌晨 3 点) date_tbl:存储有关员工日期安排的信息(例如星期一、星期二等) time_date_tbl:是一个连接表,其中员工的时间和日期安排取自表 time_tbl 和 date_tbl。

    time_tbl
    --------------------------------
    |  ID  |  Start    |  End      |
    --------------------------------
    |  1   |  22:00:00 |  03:00:00 |
    |  2   |  23:00:00 |  04:00:00 |
    |  3   |  08:00:00 |  11:00:00 |
    |  4   |  13:00:00 |  17:00:00 |
    --------------------------------

    date_tbl
    ---------------------
    |  ID  |  Days      |
    ---------------------
    |  1   |  Monday    |
    |  2   |  Tuesday   |
    |  3   |  Wednesday |
    ---------------------

    time_date_tbl
    -------------------------------------
    |  emp_id  |  time_id    |  date_id |
    -------------------------------------
    |  1       |  1          |  1       |
    |  1       |  1          |  2       |
    |  2       |  1          |  1       |
    |  3       |  3          |  1       |
    |  4       |  4          |  1       |
    |  4       |  1          |  1       |
    -------------------------------------

我想查询 mysql,以便检索数据(例如今天是星期一) 我想检索日期等于今天“星期一”的记录,还包括像晚上 10:00 到凌晨 3:00 这样的记录,其中晚上 10 点是星期日、星期一的前一天...

    desired result:
    -----------------------------------------------
    |  emp_id  |  time                 |  date    |
    -----------------------------------------------
    |  1       |  22:00:00 - 03:00:00  |  ?       | <-- started @ Sunday 10pm
    |  2       |  22:00:00 - 03:00:00  |  ?       | <-- started @ Sunday 10pm
    |  3       |  08:00:00 - 11:00:00  |  Monday  |
    |  4       |  13:00:00 - 17:00:00  |  Monday  | 
    |  4       |  22:00:00 - 03:00:00  |  ?       | <-- started @ Sunday 10pm
    -----------------------------------------------

mysql 中是否有某种“Date Crosser”函​​数/算法来完成这项工作?...


感谢您用更多信息更新问题。如果您想按天查询并返回时间范围...您的表会使这有点复杂...

SELECT tdt.emp_id,CONCAT(DATE_FORMAT(tt.Start,'%H:%m:%s'),' - ',DATE_FORMAT(tt.End,'%H:%m:%s')),dt.Days
FROM time_date_tbl tdt INNER JOIN date_tbl dt ON (tdt.date_id=dt.`ID`) INNER JOIN time_tbl tt ON (tt.`ID`=tdt.time_id)
WHERE dt.ID=1

现在我在上面看不到的是带有日期的实际日期字段...换句话说,上面的查询将列出所有星期一...永远。您可能需要向 WHERE 部分添加更多内容以对其进行更多限制。

现在,如果这是一个较新的项目,并且您仍然有能力重组...如果 time_tbl 是一个 id 以及两个日期 - 开始日期时间和结束日期时间,您实际上不需要其余的表:

SELECT emp_id,CONCAT(DATE_FORMAT(tt.Start,'%H:%m:%s'),' - ',DATE_FORMAT(tt.End,'%H:%m:%s'))
FROM time_tbl tt
WHERE (DATE_FORMAT('%w',tt.Start)=1) OR (DATE_FORMAT('%w',tt.End)=1)

同样,这将列出所有星期一。您可以添加到 where 以对其进行更多限制。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何获取mysql中两个日期之间的时间记录? 的相关文章

随机推荐

  • 从小表中删除重复行

    我在 PostgreSQL 8 3 8 数据库中有一个表 该表没有键 约束 并且有多行具有完全相同的值 我想删除所有重复项并仅保留每行的 1 个副本 特别有一列 名为 key 可用于识别重复项 即每个不同的 key 应该只存在一个条目 我怎
  • 需要在ggplot2中绘制条形图(以百分位方式)

    嗨 我有一个这样的数据集 ALL Critical Error Warning Review 2016 1412 475 4 125 154 45 49 2 58 116 86 12 1 17 我想使用 ggplot2 绘制堆叠条形图 其中
  • 混合构造函数并在 Javascript 代理对象上应用陷阱

    我有一个类 我想对其应用代理 观察方法调用和构造函数调用 计算器 js class Calc constructor add a b return a b minus a b return a b module exports Calc i
  • 仅查看 Mercurial 中的目录?

    如何仅从 Mercurial 存储库中查看子目录 看来我只能查看整个存储库 你不能 请参阅此处的讨论 https www mercurial scm org wiki PartialClone https www mercurial scm
  • SparkSQL CSV 的引用不明确

    我正在尝试在 SparkSQL 2 10 中读取一堆 CSV 文件 其自定义架构部分是 Double 部分是 String 如下所示 Build the schema val schemaStringS col1 col2 val sche
  • MatPlotLib 修改自定义线性分段颜色图

    关于已接受的答复这个问题 https stackoverflow com questions 38882233 geopandas matplotlib plot custom colors 38885389 38885389 如果我想使用
  • Java 期货管道

    我正在努力优化我的Future的管理技术 假设我们有这种典型的处理场景 我运行一个查询以从数据库中获取一些记录 SELECT FROM mytable WHERE mycondition 该查询返回很多我需要处理的行 例如 while re
  • 清除 TList 或 TObjectList

    我对使用什么来存储列表中的对象有点困惑 到目前为止我已经使用过TList并释放循环中的每个项目 然后我发现TObjectList自动执行此操作Free 然后我从文档中看到了这个TList Clear Call Clear清空 Items 数
  • C Unix 管道示例

    尝试实现一个shell 主要是管道 我已经编写了这个测试用例 我希望将 ls 简单地通过管道传输到 wc 它肯定不会按预期工作 它将 ls 打印到终端 然后打印内存耗尽 我非常不知道如何解决这个问题并让它发挥作用 find path 在我的
  • 从多个 SQL 文件恢复 SQL

    我有一个包含 400 多个 sql 文件的数据库备份 foreach表有一个单独的sql文件 是否可以将所有这些文件一起导入数据库 如果可以的话你能告诉我该怎么做吗 备份也是一个 gzip 压缩的 tar 文件 有没有办法从压缩文件中恢复
  • 动态xpath表达式

    美好的一天 同事们 请告诉我如何进行动态 xpath 解析 例如 而不是写 domXPath gt query id article id 18 gt 写类似的东西 domXPath gt query id article id 因为在我的
  • 现代和旧的编译器是用什么编写的?

    作为编译器 而不是解释器 只需要翻译输入而不运行它 其本身的性能应该不会像解释器那样有问题 因此 您不会用 Ruby 或 PHP 编写解释器 因为它太慢了 但是 编译器呢 如果您用脚本语言编写一个编译器 甚至可能具有快速开发的特点 您可能会
  • 使用通用接口约束时的协变/逆变难题

    public interface IShape public class Rectangle IShape public class Base public class Derived Base public interface IFoo
  • 如何让 ASP.NET AJAX 通过 GZip 压缩发送其 JSON 响应?

    我在 IIS7 中启用了压缩 并且它对除 ASP NET AJAX 构建的响应之外的所有响应都按预期工作 我有一个向客户端提供数据的网络服务 当直接调用Web服务时 它被正确压缩 但是 当通过 ASP NET AJAX 调用时 JSON 响
  • 同步和异步活动

    谁能帮助我理解同步 and 异步Android 中的活动 Android 中的同步和异步活动到底意味着什么 StartActivity StartSubActivity and StartAcivityForResult同步或异步启动活动
  • 多语言安装

    我正在尝试使用以下命令安装 多语言 pip install polyglot 但我收到以下错误 Command python setup py egg info failed with error code 1 in C Users K 1
  • Realm:比较原始类型的 List,例如:List

    比较 Realm 字符串列表的预期方法是什么 我正在尝试比较 Realm 中的两个字符串列表 如下所示 func testRealmListOfStrings let strings a b c let list1 List
  • 为什么条件移动不能正常工作

    在我编译下面的代码后 该功能似乎没有按预期工作 int cread int xp return xp xp 0 我提取了汇编版本中的对应部分 如下所示 xp在寄存器中 edx movl 0 eax testl edx edx cmovne
  • 高图表中的条件标记颜色

    我正在使用 Highcharts 我想用不同的颜色填充折线图中的标记 例如 当变量 a 为 1 时 则用红色填充标记 否则用绿色填充 可以这样做吗 这是代码 http jsfiddle net EnyCJ 1 http jsfiddle n
  • 如何获取mysql中两个日期之间的时间记录?

    我正在制作一个考勤系统 它包含两个日期之间的时间表 例如 晚上 10 00 到凌晨 3 00 如何从 mysql 数据库中检索时间范围在 2 个日期之间的行 我已经知道如何在 mysql 中使用 BETWEEN 我的问题是如何在不知道确切时