私のWebアプリでは、すべての日付値はSQLデータベースに渡される前にUTCに変換され、アプリに表示されるたびに現地時間に戻されます。つまり、データベースではすべての日付がUTCであるということです。
レポートの作成を開始するまでは、これで問題なく機能しました。Crystal Reportsにはタイムゾーン変換を実行する機能がないため(検出できます)、値をレポートに渡す前にSQL内で変換を実行する必要があります。
SQL Serverには、日時値を変換する機能がはるかに制限されているようです。私が見る唯一の関数はですSWITCHOFFSET
。この関数の問題は、夏時間に対応していないことです。これは大きな欠陥のようです。asp.netでは、タイムゾーンを使用して日時の値を渡すことができ、必要な夏時間の調整を考慮して、UTC時間に自動的に変換されます。
ただし、SQLでは、のようなことを言う代わりに、SWITCHOFFSET (SomeDate,"Eastern Time")
今
は言う必要がありますSWITCHOFFSET(SomeDate, "-4:00")
。しかし、テーブルからデータを取得していて、夏時間が始まる3月のすべてのデータを要求するとどうなりますか?何があっても、それのいくつかは正しくないでしょう。私は-4:00または-5:00と言うことができますが、明らかに両方ではありません。
率直に言っSWITCHOFFSET
て、夏時間の変換方法がわからない場合は半分焼けているように見えるので、これを調整する他の関数はありますか。