2

私は、何人の労働者が勤務中で、シフトに出勤している (または出勤していない) かを計算する機能に取り組んでいます。

ワーカーの「出勤」と「出勤」、およびこれらのイベントのタイム スタンプは、UTC 形式で保存されます。

ただし、シフトは固定の現地時間に開始されるため、たとえば、1 つのシフトは夏時間に関係なく常に 07:00 に開始され、たとえば 14:00 に終了します。

シフト労働者は、シフトに「割り当て」られます。

最初の要件は、「この時点で」自分のシフトに勤務している (出勤している) 労働者の数を知ることができることです。これは一種のステータス チェックです。

2 番目の要件は、たとえば個々の労働者の過去の 1 日のレポートを取得できることです (労働者はシフト全体で当番でしたか、遅刻したか、遅く退社し、残業代の支払いが必要でしたかなど)。 )

したがって、すべてが常に 1 つのタイムゾーンのみにあると仮定するのではなく、シフトの定義と共にタイムゾーンをデータベースに保存するという考え方です (シフト レコードには、現地の開始時刻、終了時刻、および現地のタイム ゾーンが含まれる場合があります。"名前"。)

質問 1: ローカル タイムゾーンを格納するために推奨される形式は何ですか? シフトの開始/終了時刻を保存して、それらの時刻を提供された UTC 時刻と比較できる SQL クエリを作成できる方法はありますか?

質問 2: 他に提案はありますか? シフトの開始/終了時間と同じになるように、出勤/退勤時間をローカルとして保存する必要がありますか? または、魔法をかけてすべてをUTC時間として保存する必要があります...しかし、「2:00 UTC」として保存されている場合、シフトの現在の現地時間開始時刻を計算する方法....それを現地時間に変換する必要がありますDST に関係なく、常に同じになるようにします。たとえば、現地時間の 7:00 などです。

4

1 に答える 1