ここで夏時間がほぼ 2 週間前に開始されて以来、次の方法で日付を制限する新しい ColdFusion サイトのクエリが正しくないデータを返していることに気付きました (StartDate の形式は dd-mmm-yyyy です)。
select ...
from ...
where ...
and o.booking_date >= date('#StartDate#')
and o.booking_date < date('#StartDate#') + date('1 day')
StartDate を次のように変更すると、正しいデータが返されることがわかりました。
and booking_date >= '#DateFormat(DateAdd("d",-1,StartDate), "dd-mmm-yyyy")# 13:00'
and booking_date < '#DateFormat(StartDate, "dd-mmm-yyyy")# 13:00'
CF サーバーの時刻は正確で、UTC+10:00 に設定されており、夏時間の自動調整が有効になっています。Ingres II Visual Manager (II_TIMEZONE_NAME) の時間設定は、AUSTRALIA-VICTORIA に設定されています。
JDBC 経由で Ingres データベースに接続する ColdFusion 10 を使用しています。Ingres データベースへの ODBC 接続を使用する古い ColdFusion 4.5 サーバーはこの問題に悩まされていないため、ColdFusion 10 または現在使用している JDBC 接続のいずれかに何らかの形で関連しているに違いないと思います。
なぜこれが起こっているのかについてのアイデアはありますか? 上記の最初の例で示したようなことを行うときに、純粋な UTC 日付/時刻 (つまり、時刻調整なし) を指定する必要があるのはなぜですか?
ありがとう。