Oracle11g 在Coldfusion 1和Oracle 11g中使用日期

Oracle11g 在Coldfusion 1和Oracle 11g中使用日期,oracle11g,coldfusion-10,Oracle11g,Coldfusion 10,我试图从一个具有两个日期数据类型的表中进行选择,即Oracle 11g中的开始日期和结束日期。 我写道: 选择* 从mytable 您收到的日期在哪里 及 我有一个错误: 执行数据库查询时出错。 [Macromedia][Oracle JDBC驱动程序]转换错误-日期/时间戳参数中的年份超出范围。 当我输入开始日期:09122014和结束日期:09122015时,我得到: 开始日期:{d'26875-03-22'} 结束日期:{d'27176-05-24'} 然后我尝试使用Oracle 11g

我试图从一个具有两个日期数据类型的表中进行选择,即Oracle 11g中的开始日期和结束日期。 我写道:

选择*
从mytable
您收到的日期在哪里
及
我有一个错误:
执行数据库查询时出错。 [Macromedia][Oracle JDBC驱动程序]转换错误-日期/时间戳参数中的年份超出范围。 当我输入开始日期:09122014和结束日期:09122015时,我得到: 开始日期:{d'26875-03-22'} 结束日期:{d'27176-05-24'}

然后我尝试使用Oracle 11g的日期函数:

        SELECT *
        FROM mytable
        WHERE date_received BETWEEN <cfqueryparam 
        cfsqltype="cf_sql_date" value="#to_date(Form.startDate, 
        'DD-MM-YY')#">
        AND <cfqueryparam cfsqltype="cf_sql_date" 
        value="#to_date(Form.EndDate, 'DD-MM-YY')#">
选择*
从mytable
您收到的日期在哪里
及
我得到了这个错误: 未定义截止日期变量

如何使用Oracle 11g后端在ColdFusion中进行选择?当他们还在使用Sybase时,我没有这个问题

当我进入startdate:09122014时

需要有效的日期对象。从技术上讲,它也接受日期字符串,但与大多数CF的“自动变魔术字符串到日期对象”转换一样,您仍然无法理解CF如何选择解释输入字符串。在这种情况下,CF解释日期对象的数字表示,或从CF纪元(即{d'26875-03-22')开始的9122014天

如果您选择依赖CF的自动转换,则日期字符串必须按照标准的美国日期约定进行格式化,如“mm/dd/yyyy”或“yyyy-mm-dd”。两种格式都将产生正确的结果。使用硬编码值进行说明:

<cfqueryparam cfsqltype="cf_sql_date" value="#CreateODBCDate('09/12/2014')#">

我想谢谢你给我的小费。我永远不知道我能做什么:今天(,'mmddyyyy')欢迎。即使您选择使用to_DATE,也应该在查询之前验证CF中的输入字符串。如果字符串最终无法完成日期转换,则无需浪费db调用。
<cfqueryparam cfsqltype="cf_sql_date" value="#CreateODBCDate('09/12/2014')#">
TO_DATE(  <cfqueryparam value="09122014" cfsqltype="cf_sql_varchar">
         , 'MMDDYYYYY'
        )