【发布时间】:2012-09-12 18:09:42
【问题描述】:
我有一个 Sybase SP,它将日期作为唯一参数并返回有关订单的信息。我从 CF 页面上的 JQuery 日期选择器获取日期 - 格式为 yy-mm-dd。当没有输入时,SP 默认为 getDate()。当我在表格上输入日期时,一切正常。当我不发送日期时 - 日期字段留空 - 我收到一个 CF 错误,告诉我参数不是日期类型。我知道 SP 正在发送一个日期时间值,但我怎样才能让 CF 函数识别它?
在 SP...
declare @order_dt datetime
If @order_dt IS NULL
BEGIN
SELECT @order_dt = getDate()
END
在cfc中...
<cfargument name="order_dt" type="date" required="true" hint="order date to search for" >
和
<cfprocparam type="In" cfsqltype="CF_SQL_DATE" dbvarname="@order_dt" value="#order_dt#" null="No">
在 .cfm 页面上...
<!--JQuery datepicker -->
<script type="text/javascript">
$(function() {
$("#datepicker").datepicker({ dateFormat: "yy-mm-dd" }).val()
});
表格看起来像这样:
<form id="xxxxForm">
<label for="date1">Pick a Date... </label>
<br>
<p><input type="text" id="datepicker" value="" name="date1"></p>
Then choose 'Search'...<br>
<input type="submit" name="submit" value="Search">
<br>
<br>
</form>
我怎样才能让 CF 认识到这是一个很好的价值?我在想如果我将@order_dt 声明为只是一个日期??
【问题讨论】:
-
如果您不向 cfc 方法发送日期,您将继续收到该错误,因为 date 参数是必需的并且必须是 date 类型。如果您希望它不允许任何日期,请将其设为不需要并给它一个默认值,即日期,以便它通过 procparam 检查。
-
同意。在您的
<cfargument>中设置required="false"或使用default="#now()#"。 -
另外,我假设您只想要来自 CF 的日期而不是日期时间?对于日期时间值,您需要在
<cfprocparam>中使用CF_SQL_TIMESTAMP -
啊啊啊!当我太努力而错过显而易见的事情时,我讨厌它。感谢您指出。是的,我只是想要一个约会。我认为 now() 会起作用。我将 proc 中的数据类型更改为 date。
标签: jquery sql coldfusion sybase