列のテーブルを作成し、DateTimeOffset
という種類のテーブルを作成する必要があります。レコードが挿入されると、現在のUTCの日付と時刻を利用される。現在のutc日付時刻の既定の日付時間オフセット列を作成する方法
デフォルトの制約をGETUTCDATE()
に追加すると、ローカルタイムにオフセットが0になります。 SYSUTCDATETIME()
を使用すると、ローカルタイムに正しいオフセットが設定されます。
オフセットが0のutc時刻を取得することはできますか?
列のテーブルを作成し、DateTimeOffset
という種類のテーブルを作成する必要があります。レコードが挿入されると、現在のUTCの日付と時刻を利用される。現在のutc日付時刻の既定の日付時間オフセット列を作成する方法
デフォルトの制約をGETUTCDATE()
に追加すると、ローカルタイムにオフセットが0になります。 SYSUTCDATETIME()
を使用すると、ローカルタイムに正しいオフセットが設定されます。
オフセットが0のutc時刻を取得することはできますか?
SYSUTCDATETIME()
または他の日付タイムスタンプが何であるかによって、あなたが望むオフセットに強制することができます。あなたは、)以下を使用して、あなたはそれがなど、GETDATE()
代わりにGETUTCDATE()
なると使いたいいままでにオフセット...
SELECT GETUTCDATE() AS UTC_DT, SYSUTCDATETIME() AS SYS_UTC_DT, SYSDATETIMEOFFSET() AS SYS_DT_OFFSET
SELECT CAST(TODATETIMEOFFSET(GETUTCDATE(), '+00:00') AS DATETIME2) AS UTC_WITH_OFFSET --SQL SERVER 2008 and onward...
SELECT GETDATE() AT TIME ZONE 'UTC' --SQL SERVER 2016 only...
これは私たちがやらなければならないことに十分近いものです。使用するデフォルトはSYSDATETIMEOFFSETであり、ローカルのオフセットを持つすべての日付で生きています。 –
まだ興味深い問題ですが、私は@JoshuaBeldenを調査するつもりです – scsimon
あなたは何 'GETUTCDATE(上のいくつかの結果を提供することができます変更)、SYSUTCDATETIME(することができますSYSDATETIMEOFFSET() 'があなたのために戻ってきています。私はあなたに正しいオフセットを与えている場合に 'SYSUTCDATETIME()'を使わない理由について混乱しています。あなたの質問を数回読んで、紛失しています - おそらく、sys DTが正しく設定されていませんか? – scsimon
現在の現地時間は2016-08-24 13:44:19.5187024です。select SysUtcDateTime()は2016-08-24 20:44:19.5187024を返します。これは正しいutcの日付と時刻で、たとえそれが言わないとしても0です。既定の制約をSysUtcDateTime()に設定すると、列の値は2016-08-24 13:44:19.5187024 + 00:00になります。それは私に無効なオフセットを持つ現地時間を与えます。 –