我正在尝试使用ColdFusion QOQ执行下面的代码,但它没有检索任何记录。我使用时间的格式"HH:mm“,并使用MySQL作为后端和原始时间列有一个”时间“的数据类型。
<cfquery dbtype="query" name="getCount">
SELECT count(*) as mycount
FROM getExams
WHERE start_time <= <cfqueryparam cfsqltype="cf_sql_time" value="#curr_time#">
</cfquery>我能够使用<cfqueryparam>成功地比较日期值。但是,它不适用于时间列。有人能帮忙吗?
更新:
有一个关于这个问题的公开错误报告。请参阅bug #3551866
发布于 2013-04-30 05:54:41
即使经过了许多小时的努力,我仍然无法找到一种简单的方法来比较ColdFusion QOQ中的时间值。所以,这是我使用的解决方法:
步骤1
若要检索带有时间数据类型的db列,请使用hhmmss格式。
例如:在我的MySQL中,我使用了:
CONVERT(DATE_FORMAT(db_time_col, '%H%i'), UNSIGNED INTEGER) as db_time_col
步骤2
在ColdFusion QOQ中,将时间值转换为步骤1中使用的相同格式。
例如:在我的例子中,它是:<cfqueryparam cfsqltype="cf_sql_integer" value="#timeFormat(cf_time_col, 'HHmm')#">
发布于 2013-04-25 06:17:28
需要使用createodbcdatetime()/CreateODBCTime()函数转换日期时间格式,以将当前日期和时间与DB日期和时间格式列进行比较
发布于 2013-04-25 12:34:34
问题是没有约会的时间是没有意义的。因此,时间数据类型有一个不可见的日期应用到它。然而,不同的软件将不同的日期应用于时间数据类型。
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一样,我也希望看到一种比较简单的方法来比较这些值。
https://stackoverflow.com/questions/16207670
复制相似问题