Mysql ColdFusion QOQ,比较时间值?

Mysql ColdFusion QOQ,比较时间值?,mysql,coldfusion,coldfusion-9,qoq,Mysql,Coldfusion,Coldfusion 9,Qoq,我试图使用ColdFusion QOQ执行以下代码,但它没有检索任何记录。我使用格式为“HH:mm”的时间,并使用MySQL作为后端,原始时间列的数据类型为“time” 选择count(*)作为mycount 通过考试 其中start_time需要使用createodbcdatetime()/CreateODBCTime()函数转换日期时间格式,以转换当前日期和时间,与DB日期和时间格式列进行比较问题在于,没有日期的时间毫无意义。因此,时间数据类型应用了一个不可见的日期。但是,不同的软件对时间

我试图使用ColdFusion QOQ执行以下代码,但它没有检索任何记录。我使用格式为“HH:mm”的时间,并使用MySQL作为后端,原始时间列的数据类型为“time”


选择count(*)作为mycount
通过考试

其中start_time需要使用createodbcdatetime()/CreateODBCTime()函数转换日期时间格式,以转换当前日期和时间,与DB日期和时间格式列进行比较

问题在于,没有日期的时间毫无意义。因此,时间数据类型应用了一个不可见的日期。但是,不同的软件对时间数据类型应用不同的日期

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">

选择注册号、事件时间
从承认事实开始
其中日期=昨天
和排放
和日期部分(小时,事件时间)<13
我看到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>

挑选*
从x
其中事件时间<
不会返回任何行。在“值得一试”类别中,甚至我也尝试过:

where cast(event_time as time) < 
<cfqueryparam cfsqltype="cf_sql_time" value="#CreateTime(18,0,0)#"> 
where cast(事件时间为时间)<

但结果没有改变。与Saurabh一样,我也希望看到一种更简单的方法来比较时间值。

即使经过许多小时的努力,我还是无法找到一种简单的方法来比较ColdFusion QOQ中的时间值。下面是我使用的解决方法:

步骤1
要检索具有时间数据类型的db列,请使用格式hhmmss。
在我使用MySQL的情况下:
将(日期\u格式(db\u时间\u列、%H%i')、无符号整数)转换为db\u时间\u列

步骤2
在ColdFusion QOQ中,将时间值转换为步骤1中使用的格式。

在我的情况下是:

我尝试了下面的代码,但仍然运气不好<代码>选择计数(*)作为GetTests中的mycount,其中开始时间尝试使用此选择计数(*)作为GetTests中的mycount,其中开始时间仍然不适用于createODBCDateTime。我知道在网上有一个解决方案,我也尝试过使用时间戳。还是不走运(您的列包含带日期的日期时间或仅包含日期的日期时间。非常感谢@swetha帮助解决了我的问题。我找到了一个替代方法来获得预期的结果。我必须使用
转换(日期格式(db_time_col,'%H%i'),无符号整数)作为MySQL查询中的db_time_col
,然后使用
来比较QOQ中的时间列。我希望有一种更简单的方法来比较这些值。如果您可以确定数据库服务器使用的是什么作为“隐藏”日期(在您的示例中是1970-01-01),那么使用
CreateODBCDateTime()会更容易吗
使用数据库服务器的默认日期和所需时间执行功能?一旦您知道我们正在处理什么,我们可以做任何您想做的事情。然而,您的建议虽然与@Saurabh最终所做的一样有效,但并不一定简单。
where cast(event_time as time) < 
<cfqueryparam cfsqltype="cf_sql_time" value="#CreateTime(18,0,0)#">