0

私はこれで最後の日かそこらで頭を悩ませてきました。ここの誰かが光を当てることができることを願っています.

最近、UTC の Amazon RDS SQL Server に移行しました。ただし、データベース内のすべての時間はローカル タイム ゾーン (西ヨーロッパ) です。私の次の課題は、これらすべての DateTime を UTC に変換することです。

最も簡単な方法は、Sql Serverで直接行うことだと思いますが、DSTを説明する簡単な方法がないため、SQL CLRのユーザー定義関数に頼りました(ここの別の回答から見られます)。現時点では動作しません。現在、次のようになります。

[Microsoft.SqlServer.Server.SqlFunction]
  public static SqlDateTime ToUniversal(SqlDateTime dt)
  {
    if (dt.IsNull)
    {
      return SqlDateTime.Null;
    }
    else
    {
      return dt.Value.ToUniversalTime();
    }
  }

ただし、この関数はローカル時間から世界時への変換は行いません。例、

select creationtime, dbo.ToUnversal(CreationTime) as New from testtable

元の日時でもある同じ 2 つの日時を返します。

何故ですか?Sql Server が既に UTC にあるため、それを認識してそれ以上変換しないためですか?

また、他に推奨されるアプローチがあれば、追加してください。私はすでに小さな.NETアプリケーションでそれを解決しようとしましたが、120GBのデータベースでは非常に遅いです.

4

1 に答える 1