我正在开发一个使用 PHP 和 PostgreSQL 作为数据库的考勤应用程序。
这是我的桌子:
- ID - 整数,PK
- 名称 - 字符变化(50)
- 及时无时区
- Out - 没有时区的时间
基本上,我想检查指定时间内有多少人。例如,如果输入是 08:00,那么所有在 08:00 之前签到并在 08:00 之后签退的人都将被计算在内。
我遇到的问题是当Out < In,这意味着该人在00:00之前登录并在00:00之后退出。我试图通过使用以下 SQL 来解决这个问题:
SELECT COUNT(*) FROM(
SELECT tbl_1."ID" FROM attendance as tbl_1 WHERE "In" < "Out" AND "In" < '$input' AND "Out" > '$input'
UNION
SELECT tbl_2."ID" FROM attendance as tbl_2 WHERE "Out" < "In" AND "In" < '$input2' AND "Out" > '$input'
) AS tmp_tbl
$input 是一个 PHP 变量,用于存储输入数据(字符串)。$input2 是一个 PHP 变量,存储输入数据 +24 小时(我替换了前两个字符)。
但不幸的是,我遇到了另一个问题——PostgreSQL 无法将时间与>24:00 的值进行比较。
查询失败:错误:日期/时间字段值超出范围:“35:11:00”
除了为 DateIn 和 DateOut 添加另一列之外,谁能帮我解决这个问题?存储有关日期的信息?
对不起我的英语不好。