【问题标题】:MySQL SELECT Minutes between two dates (DIFFERENT DAYS)MySQL SELECT 两个日期之间的分钟数(不同的日期)
【发布时间】:2020-04-26 17:31:19
【问题描述】:

我今天对这个 MySQL 声明感到非常沮丧,啊哈。

因此,我需要找出志愿者打卡时间与他们打卡时间之间的分钟数。

在志愿者时钟表中,如果我将 Clock_In 的日期时间设置为与 Clock_Out 相同的 DAY,我可以让任何时间函数工作(TIMEDIFF 等)但是......如果下班日是第二天(例如,如果我在 2020-04-26 12:00:00 打卡,并在 2020-04-27 12:00:00 打卡)下面的代码应该返回 1440,因为它是 60 * 24,但它根本不返回任何记录。

这是我正在使用的语句:

SELECT 
          A1.volunteer_id, 
          A1.datetime AS check_in_at, 
          A2.datetime AS check_out_at,
          ROUND(time_to_sec((TIMEDIFF(A2.datetime, A1.datetime))) / 60) AS total_time
          FROM 
          volunteer_timeclock AS A1 
          INNER JOIN volunteer_timeclock AS A2 
          ON A1.volunteer_id = A2.volunteer_id 
          AND DATE(A1.datetime) = DATE(A2.datetime) 
          WHERE A1.status = 'clock_in' 
          AND A2.status = 'clock_out' 
          AND DATE(A1.datetime) BETWEEN '2020-01-1' 
          AND '2020-12-31'
          AND DATE(A2.datetime) BETWEEN '2020-01-1' 
          AND '2020-12-31'
          AND A1.volunteer_id = '25'
          ORDER BY A1.datetime DESC

谢谢!!

【问题讨论】:

    标签: mysql sql


    【解决方案1】:

    TIME 值在其范围内固有地受到限制。将datetimes 直接转换为秒。这也简化了逻辑:

    (TO_SECONDS(A2.datetime) - TO_SECONDS(A1.datetime)) / 60)
    

    【讨论】:

    • 感谢您的快速响应。我也试过了,如果日期是第二天,它仍然不会返回任何行。
    • 没关系。这是我的 AND 语句的错误,但是我将使用它来避免限制。
    【解决方案2】:

    没错。我觉得自己像个白痴,我有一个 AND 声明说日期必须相同。感谢您的回复。

    【讨论】:

    • 你可以随时删除问题
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-05
    • 2017-11-05
    • 1970-01-01
    相关资源
    最近更新 更多