自从大约两周前开始夏令时以来,我们注意到在我们的新 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。
我们使用 ColdFusion 10 通过 JDBC 连接到 Ingres 数据库。我们使用 ODBC 连接到 Ingres 数据库的旧 ColdFusion 4.5 服务器不会遇到这个问题,所以我认为我们遇到的问题一定与 ColdFusion 10 或我们现在使用的 JDBC 连接有关。
关于为什么会发生这种情况的任何想法?为什么在执行上面第一个示例中所示的操作时需要指定纯 UTC 日期/时间(即没有时间调整)?
谢谢。