gpt4 book ai didi

php - 时间表MySQL查询

转载 作者:行者123 更新时间:2023-11-30 23:35:16 26 4
gpt4 key购买 nike

我在 MySQL 中有一个工作时间卡,但我无法使用 VIEWFUNCTION 来计算时间。我想使用 MySQL 函数调用,例如 getTodaysHours (user CHAR(45)) 来返回用户当天的小时数(包括打卡后的小时数)。问题是我不知道如何在 FUNCTION 中执行数学运算。

这是我的表格:

Time Sheet

这是我的“麻烦”程序:

DELIMITER $$
CREATE DEFINER=`root`@`localhost` PROCEDURE `getTodaysHours`(OUT hours INT, IN user CHAR(45))
BEGIN
SELECT SUM(timestamp) FROM info
WHERE DATE( FROM_UNIXTIME(timestamp-25200) )=CURDATE() AND
fullname=user
ORDER BY timestamp ASC;
END

显然,SUM() 不是我想要使用的,但我希望其余部分能够正常工作。

最佳答案

如果人们可以在同一天多次上下类打卡,这将很难仅使用具有上面显示的数据库结构的单个纯 SQL 语句来完成。

如果它知道您每天只能 checkin / checkout 一次,那么这里就可以了

SELECT COALESCE(out.timestamp, UNIX_TIMESTAMP()) - in.timestamp
FROM info in
LEFT OUTER JOIN info out on in.fullname = out.fullname
WHERE in.inout = 'in'
AND out.inout = 'out'
AND DATEDIFF( FROM_UNIXTIME(in.timestamp),CURDATE()) = 0
AND DATEDIFF( FROM_UNIXTIME(out.timestamp),CURDATE()) = 0

如果您添加一个列来跟踪成对的输入/输出,那么比较将变得很容易,因为您将能够加入该列。按照现在的方式,您必须进行相关的子选择才能在输入之后找到下一个最近的输出。

总而言之,您应该将此程序化,因为在数据不符合查询预期的情况下,单个 SQL 语句不会返回适当的错误(上面的两个输入现在输出的情况)

关于php - 时间表MySQL查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8001942/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com