「特定の日付範囲内の有効なレコードを求める SQL クエリ」
P粉884667022
P粉884667022 2023-08-31 13:58:14
0
2
540

勤怠管理に取り組んでいます。チェックインとチェックアウトは、テーブル内の 2 つの異なるレコードです

誰かが数日間サインアウトしなかった可能性もありますが、その日の出席としてカウントされる必要があります

担当者 ID - チェックイン時間 - チェックアウト時間 3842 12/17/2022 09:030 -- チェックアウトなし (2022 年 12 月 17 日以降は毎日カウントされる必要があります) 3843 2022/12/17 08:00 -- 2022/12/17 09:30 (以下同日) 3843 2022/12/17 11:00 -- 2022/12/17 13:30 (上記は同日) 3841 12/17/2022 08:00 -- 12/17/2022 17:45. (簡易同日) 3844 12/17/2022 22:00 -- 12/18/2022 6:40 (真夜中を過ぎる - 12/17 と 12/18 をカウントする必要があります) 私の望む結果は 12/15 1名 12/17 4名 12/18 2名

X 日に何人出席するかを知りたいです

2 つの異なるレコード (チェックインとチェックアウト) または 1 つのみのレコード (チェックイン) を処理する方法が少しわかりません

CREATE TABLE `my_history` ( `id` int(11) NOT NULL AUTO_INCREMENT、 `person_id` int(11) デフォルト NULL、 `アクション` varchar(24) デフォルト NULL、 `when_created` タイムスタンプ NULL DEFAULT CURRENT_TIMESTAMP, 主キー (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

一部の挿入ステートメント

INSERT INTO `my_history` (`person_id`、`action`、`when_created`) 価値観 (3842, 'チェックイン', '2022-12-15 08:00:00'), (3842, 'チェックアウト', '2022-12-15 09:30:00'), (3842, 'チェックイン', '2022-12-17 09:30:00'), (3843, 'チェックイン', '2022-12-17 08:00:00'), (3843, 'チェックアウト', '2022-12-17 09:30:00'), (3843, 'チェックイン', '2022-12-17 11:00:00'), (3843, 'チェックアウト', '2022-12-17 13:30:00'), (3841, 'チェックイン', '2022-12-17 08:00:00'), (3841, 'チェックアウト', '2022-12-17 17:42:00'), (3844, 'チェックイン', '2022-12-17 22:00:00'), (3844, 'チェックアウト', '2022-12-18 06:40:00'); CREATE TABLE 人 ( idINT(11) ) に挿入 人 価値観 (3841)、 (3842)、 (3843)、 (3844)
      

;
P粉884667022
P粉884667022

全員に返信 (2)
P粉253800312

通常、この状況をテストするには、関心のある日付がチェックイン日より後であり、チェックアウト日より小さいかどうかを確認する必要があります。例えば### リーリー

チェックアウト日が空でも「OK」になる状況を解決するには、空の値を条件を満たす値に置き換えるだけです。

リーリー

いいねを押す+0
    P粉317679342

    要件の変更により、古い回答は削除されました。急いでいたので説明する時間がありませんでした。

    リーリー

    https://dbfiddle.uk/RXx0x9xt

    いいねを押す+0
      最新のダウンロード
      詳細>
      ウェブエフェクト
      公式サイト
      サイト素材
      フロントエンドテンプレート
      私たちについて 免責事項 Sitemap
      PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!