タグ付けされた質問 「timezone」

5
SQL ServerでTimeZoneを適切に処理する方法は?
私のローカル開発サーバーは中東にありますが、本番サーバーは英国にあります。 ユーザーにタイムゾーンで日付を表示する必要があります。たとえば、ユーザーがサウジアラビアにいる場合、サウジアラビアの形式に従って時間を表示する必要があります。 TimeZoneという新しいデータベーステーブルを作成し、UTCで時間を保存する必要がありますか?

10
UTCと現地時間の間にDSTの前または後の日付の正しいオフセットを取得するにはどうすればよいですか?
現在、UTC日時からローカル日時を取得するために次を使用しています。 SET @offset = DateDiff(minute, GetUTCDate(), GetDate()) SET @localDateTime = DateAdd(minute, @offset, @utcDateTime) 私の問題は、夏時間の間発生した場合GetUTCDate()や@utcDateTime、@localDateTime時間のオフされてしまいます。 現在の日付ではない日付のUTCから現地時間に変換する簡単な方法はありますか? SQL Server 2005を使用しています

2
タイムスタンプをPostgreSQLに最適に保存する方法は?
私はPostgreSQL DBの設計に取り組んでおり、タイムスタンプをどのように保存するのが最善か疑問に思っています。 仮定 異なるタイムゾーンのユーザーは、すべてのCRUD機能にデータベースを使用します。 私は2つのオプションを見ました: timestamp NOT NULL DEFAULT (now() AT TIME ZONE 'UTC') bigint NOT NULL DEFAULT 以下のためにtimestamp私は、INSERTモーメントの正確な(UTC)のタイムスタンプを表すことになり、文字列を送信します。 以下のためにbigint私はまったく同じことを格納し、その数形式のでしょう。(タイムゾーンの問題はミリスがサーバーに引き渡される前に処理されるため、UTCでは常にミリスです。) を格納するbigintことの主な利点の1つは、正しい形式のタイムスタンプの受け渡しが単純な数値よりも複雑であるため(Unix Epocからのミリ秒)、格納および取得が容易になることです。 私の質問は、どちらが最も柔軟な設計を可能にし、各アプローチの落とし穴になる可能性があるものです。

2
なぜAT TIME ZONEは非決定的ですか?
SQL Server 2016はAT TIME ZONE非決定的と思われます。ただし、これを公式に説明したり、その背後にある理由について理論的根拠を示したりする文書を見つけることができませんでした。 なぜAT TIME ZONE非決定的ですか? 非決定性を示す例 実行中: CREATE TABLE Test ( LegacyTimestamp DATETIME, Timestamp AS LegacyTimestamp AT TIME ZONE 'Eastern Standard Time' PERSISTED ); 次のエラーを返します。 Msg 4936, Level 16, State 1, Line 1 Computed column 'Timestamp' in table 'Test' cannot be persisted because the column is non-deterministic.

1
タイムゾーンを使用せずにUnix時間をPostgreSQLのティムスタンプに変換する方法は?
タイムゾーンがインドのタイムゾーン(UTC +5:30)に設定されているサーバーでPostgreSQLデータベースを実行しています このように作成されたテーブルにいくつかのデータがあります: CREATE TABLE "CLOUDDATA" ( "CD_Tm_Obs" timestamp without time zone, "CD_Avg_Cloud" double precision ) データをクエリし、特定の時間の値を取得したい。入力はUnixタイムスタンプ(1970年1月1日からの秒数)になります UNIXの時刻をタイムスタンプに変換する唯一の方法は、次のとおり select to_timestamp(TRUNC(CAST(1395036000 AS bigint)))です。しかし、これはタイムゾーンでタイムスタンプを作成します。データはにtimestamp without time zoneあるため、結果は得られません。 タイムゾーンなしでUnix時間をPostgreSQLのティムスタンプに変換する方法は?

1
Postgresの0001年のタイムゾーンに、UTCからのこのようなクレイジーなオフセットがあるのはなぜですか?
Postgres 9.5では、年0001(ゼロ0000年なし)を試しているときに以下の結果が表示されたことに驚きました。 のオフセット-07:52:58? いくつかのサンプルコード。Iの混合使用することを注意TIMESTAMP WITH TIME ZONEしてTIMESTAMP WITHOUT TIME ZONE、慎重に読んでください。 SET TIME ZONE 'America/Los_Angeles' ; SELECT (TIMESTAMP WITH TIME ZONE '2015-01-01 00:00:00.0', TIMESTAMP WITH TIME ZONE '0001-01-01 00:00:00.0Z', TIMESTAMP WITHOUT TIME ZONE '0001-01-01 00:00:00.0Z') ; ("2015-01-01 00:00:00-08","0001-12-31 16:07:02-07:52:58 BC","0001-01-01 00:00:00") 私はその2番目の値に驚いています0001-12-31 16:07:02-07:52:58 BC。America/Los_AngelesUTCから8時間遅れているのと同じように、オフセットを8時間戻し-08:00ます。しかし-08:00、オフセットの代わりにです-07:52:58。どうして? UTCで問題なし UTCでデータを入力する場合、このような問題はありません。 SET TIME ZONE 'UTC' ; …


3
ゾーン名がPostgreSQLのバグの「AT TIME ZONE」
私はこのstackoverflowの質問に答えていて、奇妙な結果を見つけました: select * from pg_timezone_names where name = 'Europe/Berlin' ; name | abbrev | utc_offset | is_dst ---------------+--------+------------+-------- Europe/Berlin | CET | 01:00:00 | f そして次のクエリ select id, timestampwithtimezone, timestampwithtimezone at time zone 'Europe/Berlin' as berlin, timestampwithtimezone at time zone 'CET' as cet from data ; id | timestampwithtimezone | …

2
データマート/倉庫でのタイムゾーンの処理
私たちはデータマート/倉庫のビルディングブロックを設計し始めており、すべてのタイムゾーンをサポートできる必要があります(私たちのクライアントは世界中から来ています)。オンライン(および本)でのディスカッションを読むと、一般的な解決策は、ファクトテーブルに日付と時刻の個別のディメンションとタイムスタンプを持つことです。 しかし、私が答えるのに苦労している質問は、動的なタイムゾーンの要件を考慮すると、日付と時刻のディメンションが実際にどのように役立つかです。時間ディメンションはもう少し理にかなっていますが、日付ディメンションで苦労しています。日付ディメンションの一般的な設計アプローチには、通常、曜日名、曜日、月名などのプロパティが含まれます。私が抱えている問題は、2013年12月31日火曜日の午後11時(UTC)が水曜日であることです。 、2014年1月1日、UTC + 2以降のすべてのタイムゾーン。 したがって、すべてのクエリ(およびレポート)でこれらすべてのタイムゾーン変換を行う必要がある場合、おそらく使用しない(これらのプロパティのように)これらのプロパティを保持して保存することの意味は何ですか?一部の人々は、タイムゾーンごとにファクト行を持つことを提案しますが、それは私にはばかげているようです。毎月何百万ものレコードを保存できる必要があります。 他の人は、タイムゾーンブリッジテーブルを使用することをお勧めします。これは、ある程度の意味がありますが、クライアントアプリとレポートが日付から簡単に理解できるはずのことを達成するための追加の複雑さと結合のようにも見えます(レポートは主にWebベースになります)日付の変換、表示、およびフォーマットを支援する無数のライブラリがあります)。 私が考えることができる唯一のことは、日付と時間でグループ化することの容易さとおそらくパフォーマンスですが、日付部分でグループ化することはどれほど悪いことですか(MS SQLを使用していますが、数百万の行をクエリすることになります)、または考慮する必要があります月曜日などのほとんどのリテラルはタイムゾーンが機能するときにあまり意味がないので、ほとんどの場合、時間、日、月、年の数以下の非常に単純な日付と時刻のディメンションですか?

2
多くのタイムゾーンのデータに対してレポートするためのデータウェアハウスの設計
多くのタイムゾーンのデータに対するレポートをサポートするデータウェアハウスの設計を最適化しようとしています。たとえば、アクティビティを1日の時間でグループ化して表示する必要がある、1か月分のアクティビティ(数百万行)のレポートがあるとします。そしてもちろんその日の時間は与えられたタイムゾーンの「ローカル」時間でなければなりません。 UTCと1つの現地時間をサポートしたときにうまく機能するデザインがありました。UTCおよび現地時間の日付と時刻のディメンションの標準設計、ファクトテーブルのID。ただし、100以上のタイムゾーンのレポートをサポートする必要がある場合、そのアプローチは拡張されないようです。 ファクトテーブルは非常に広くなります。また、レポートの特定の実行でグループ化に使用する日付と時刻のIDを指定するSQLの構文の問題を解決する必要があります。おそらく非常に大きなCASEステートメントでしょうか? カバーしているUTC時間範囲ごとにすべてのデータを取得し、それをプレゼンテーションレイヤーに戻してローカルに変換してそこで集計するといういくつかの提案を見てきましたが、SSRSを使用した限られたテストでは、非常に遅くなることが示唆されています。 私はこの主題についてもいくつかの本を調べましたが、それらはすべて、UTCがあり、ディスプレイで変換するか、UTCと1つのローカルがあると言っているようです。任意の考えや提案をいただければ幸いです。 注:この質問は「データマート/倉庫でのタイムゾーンの処理」に似ていますが、その質問についてはコメントできません。 更新: Aaronが重要な更新を行い、サンプルコードと図を投稿した後、私はAaronの回答を選択しました。彼の回答に対する私の以前のコメントは、回答の元の編集を参照しているため、あまり意味がありません。必要に応じて戻ってきてこれをもう一度更新しようとします

1
夏時間
私の環境では、ネイティブバックアップで実行されているサーバーとOla Hallengren計画があります。当社のサーバーは、2008、2012、2014の組み合わせです。すべての完全バックアップは午前12時に行われ、ログバックアップは15分ごとに行われます。 これまでに夏時間を考慮したことがないので、どのような調整を行うべきか教えてください。 午前12時のフルバックアップは影響を受け、ログバックアップはどうなりますか?

1
SQL Serverからタイムゾーンキー名を取得する最良の方法
以下は私がつなぎ合わせたものですが、他に利用できる方法があるかどうかを確認したいと思いました。 SET NOCOUNT ON; GO DECLARE @tz VARCHAR(50) EXEC [master].[dbo].[xp_regread] 'HKEY_LOCAL_MACHINE' ,'SYSTEM\CurrentControlSet\Control\TimeZoneInformation' ,'TimeZoneKeyName' ,@tz OUT; SELECT GETDATE() ,'(' + LEFT(PARSENAME(REPLACE(@tz, ' ','.'),3),1) + '' + LEFT(PARSENAME(REPLACE(@tz, ' ','.'),2),1) + '' + LEFT(PARSENAME(REPLACE(@tz, ' ','.'),1),1) +')' 出力:2014-10-14 16:22:21.037(CST)
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.