0

我正在使用cfscript语法创建一个查询,并且我有两个查询参数是日期。我第一次使用创建了日期字符串

queryservice.addParam(
     name="last_update",
     value="createODBCDate(now())",
     cfsqltype="cf_sql_date");

我认为这将类似于:

<cfqueryparam value="#createODBCDate(now())#" cfsqltype="cf_sql_date">

所以,当我运行查询时,我得到:

The cause of this output exception was that: coldfusion.runtime.Cast$DateStringConversionException: The value createODBCDate(now()) cannot be converted to a date.

美好的。所以我创建了一个变量,

var currentDate = createODBCDate(now());

将其添加到

queryservice.addParam(
     name="last_update",
     value="createODBCDate(now())",
     cfsqltype="cf_sql_date");

并得到

The cause of this output exception was that: coldfusion.runtime.Cast$DateStringConversionException: The value currentDate cannot be converted to a date.

当我使用标准<cfquery ...语法创建查询时,它运行良好。

所以,我假设我做错了什么,但我无法终生弄清楚那是什么。

顺便说一句,这真的是我第一次尝试使用<cfscript>语法创建查询。

4

2 回答 2

6

value="createODBCDate(now())"

您忘记了函数周围的 # 符号。没有这些,它只是一个字符串。因此,该函数永远不会被调用,并且您最终将文字字符“createODBCDate(now())”作为 date 传递value

更新:

顺便说一句,cf_sql_date自动删除任何时间部分。因此,虽然使用createODBCDate不会伤害任何东西,但它是多余的。你可以简单地写:

    queryservice.addParam(
         name="last_update",
         value="#now()#",
         cfsqltype="cf_sql_date");
于 2012-09-27T15:47:39.290 回答
0

您的第二次尝试需要#,就像@Leigh 提到的那样,也没有引用您创建的变量“currentDate”。

于 2012-09-27T15:51:35.463 回答