誰かが SQL の初心者を助けてくれることを願っています (注意してください、私は非常に緑なので、優しくしてください)。私は会社の請負業者の従業員の監査を手伝って、報告されたタイムシートで彼らが時間を搾り取っている可能性があるかどうかを確認しようとしています. 彼らはリモートで作業しているため、彼らが行き来するのを見ることはありません。私が実行しているのは、エントリの最初と最後のタイムスタンプを確認し、それらを日ごとにロールアップして、特定の日付に作業に費やした時間数を把握できるようにするクエリです。したがって、実行しているクエリは次のようになります。
SELECT MIN(entry_time) AS first_time_stamp, MAX(entry_time) AS last_time_stamp, employee
FROM some_database.some_table
WHERE employee = 'Kevin' AND entry_time > '20110301'
GROUP BY DATE_FORMAT(entry_time, '%Y%m%d'), employee
;
これにより、次のサンプルのようなデータが返されます。
'2011-03-01 01:10:58', '2011-03-01 17:53:43', 'Kevin'
'2011-03-02 12:00:47', '2011-03-02 20:36:59', 'Kevin'
'2011-03-03 01:34:58', '2011-03-03 21:37:22', 'Kevin'
ここまでは順調ですが、"Kevin" が非常に長い日々を過ごしているように見えることを除けば. 問題は、タイムスタンプが GMT であり、私たちが米国の西海岸にいることです。たとえば、最初に表示されるタイム スタンプは実際には 2 月 28 日であり、その日の最後のエントリである可能性があります。
これらのタイムスタンプが選択される前に、これらのタイムスタンプを -08:00 までオフセットする方法を探して、過去 1 日を費やしましたが、空または混乱し続けます (通常は両方)。entry_time
オフセット時間に基づいて値を返すようにオフセットする方法を知っている人はいますか?
相対的な作業時間を実際に探しているだけなので、標準時間と夏時間について心配する必要はありません。
ありがとう!