私は各社が個別のタイムゾーンを持つ会社のテーブルを持っています。例えば - 会社1は、時間帯UTC + 10と 会社2を有し、 - UTC + 2タイムゾーン付きのPostgresクエリ
テーブルcompanies
は(私は場合UTCからストアオフセット値のための追加のフィールドを追加することができ、フィールドTIME_ZONEとAmerica/Los_Angeles
等ゾーンの記憶されている略語を有します必要)。例えば、タイムゾーン(UTC-0) ずにTIMESTAMPを保存start_dateのフィールドと
と持つテーブル要求 - id | company_id | start_date(utc-0) 1 1 21-03-16 02-00 // added for company `21-03-16 12-00` 2 2 21-03-16 23-00 // added for company `22-03-16 01-00` 3 1 20-03-16 13-00 // added for company `20-03-16 23-00` 4 1 21-03-16 23-00 // added for company `22-03-16 09-00
私は21-する21-03-16 00-00から開始レコードを選択します各企業のタイムゾーンを考慮した03-16 23-59
が、私が使用する場合 -
select * from request where start_date between '2016-03-21 00:00:00.000000' AND '2016-03-21 23:59:59.999999'
私は、ID = 2と4
要求を取得するが、これらの要求は、各企業のための事実によって22-03-16を追加しました。
どのように私はこの状況を1つ選択することができますか?どうもありがとう。
2016年3月21日00」BETWEEN TIME ZONEのcompanies.time_zone AT request.start_date 'のように:00:00Z 'AND' 2016-03-21 23:59:59.999999Z''? OFCこれは、すべての行が 'time_zone'にPostgreSQLで受け入れられたタイムゾーンを持つときにのみ機能します。 'CHECK((タイムスタンプ '2000-01-01 00:00:00' AT TIME ZONE time_zone)IS NOT NULL ')'のようなチェック制約を定義して 'time_zone'を検証することができます。 – pozs