问题是没有日期的时间是没有意义的。因此,时间数据类型应用了一个不可见的日期。但是,不同的软件将不同的日期应用于时间数据类型。
ColdFusion 适用似乎适用于 1899-12-30。这段代码:
<cfdump var="#CreateTime(18,0,0)#">
返回 {ts '1899-12-30 18:00:00'}
但是,当我运行数据库查询时:
<cfquery name="x" datasource="dw">
select registration_number, event_time
from admit_fact
where date = yesterday
and discharge
and datepart(hour, event_time) < 13
</cfquery>
<cfdump var="#x#" metainfo="no">
我看到 19 行的值类似于 {ts '1970-01-01 11:30:00'}。结果,像这样的 QofQ:
<cfquery name="y" dbtype="query">
select *
from x
where event_time < <cfqueryparam cfsqltype="cf_sql_time" value="#CreateTime(18,0,0)#">
</cfquery>
不会返回任何行。在“值得一试”类别中,即使我尝试过:
where cast(event_time as time) <
<cfqueryparam cfsqltype="cf_sql_time" value="#CreateTime(18,0,0)#">
但结果并没有改变。像 Saurabh 一样,我也希望看到一种更简单的方法来比较这些值。