1

这是我的查询。

<cfquery name="qryname" datasource="dsn">
UPDATE ticketlist
SET status  = <cfqueryparam cfsqltype="CF_SQL_VARCHAR" value="Expired"> 
WHERE expdatetime < 
<cfqueryparam value = "#yourDate#" cfsqltype = "CF_SQL_DATE" maxLength = "19">
</cfquery>

它能够给我所有 expdatetime 小于#yourdate# 的结果,唯一的问题是它只显示结果谁的差异是一整天,而不是那些差异以分钟为单位的结果。因此,差异小于 #yourtime# by min's 的 expdatetime 不会显示在结果中,除非差异至少相差一天。

如何针对最小精度优化此查询?

我知道两个可能有用的函数,DateDiff 和 DateCompare,但我不知道如何在查询中应用它们。

DateDiff("datepart", "date1", "date2")

DateCompare("date1", "date2" [, "datePart"])

日期部分精度

* s Precise to the second
* n Precise to the minute
* h Precise to the hour
* d Precise to the day
* m Precise to the month
* yyyy Precise to the year

任何帮助将不胜感激。

4

3 回答 3

6

尝试使用CF_SQL_TIMESTAMP,即:

<cfqueryparam value = "#yourDate#" cfsqltype = "CF_SQL_TIMESTAMP">

I'm not sure if you'll need the maxlength attribute. I've found that the CF mapping needs to be timestamp to get the required precision.

于 2010-06-28T09:32:12.470 回答
1

mysql函数timestampdiff应该做你需要的

TIMESTAMPDIFF(unit,datetime_expr1,datetime_expr2)

单位值应为 MINUTE 或 DAY

于 2010-06-28T03:52:15.047 回答
0

我自己是一个 MS-SQL 人,但是使用 DateDiff 函数并计算结果是正数、负数还是零应该可以告诉您您需要的信息。

但是,我不确定你为什么需要这样做。IS LESS THAN 测试应该产生所需的结果,我唯一能想到的是如果您的#yourDate# 变量不够具体,即不包括时间,那么您的时间将被解释为 00:00:00,这会扭曲你的结果。我建议确保#yourDate# 中的数据尽可能具体。

于 2010-06-28T07:09:07.067 回答