【发布时间】:2013-03-09 02:21:32
【问题描述】:
我要做的是在两个日期之间执行查询,日期将来自一个参数。
在下面的代码中,我放置了一个参数并让第二个日期固定为示例目的。
代码/查询有点长,粘贴在这里,但这里是一个简短的版本:
OracleParameter fromDateParameter = new OracleParameter();
fromDateParameter.OracleDbType = OracleDbType.Varchar2;
fromDateParameter.Value = "'3/06/2013 20:00:00'";
this.oracleDataAdapter4.SelectCommand = new OracleCommand("
SELECT DISTINCT (LOG.RID) FROM LOG WHERE LOG.TIMESTAMP
BETWEEN TO_DATE(:fromDateParameter, 'MM/DD/YYYY hh24:mi:ss ')
AND TO_DATE('3/06/2013 23:59:00', 'MM/DD/YYYY hh24:mi:ss '))",
oracleConnection4);
oracleDataAdapter4.SelectCommand.Parameters.Add(fromDateParameter);
this.oracleDataAdapter4.Fill(event11);
我收到了这条消息:
ORA-01858:在数字所在的位置发现了一个非数字字符 预计
我在没有参数的情况下做了同样的查询,它工作得很好。
谢谢
【问题讨论】:
-
WHERE = LOG.TIMESTAMP BETWEEN ... 可以吗?不应该是 WHERE LOG.TIMESTAMP BETWEEN ...
-
好的,让我们从等式中去掉参数 SELECT DISTINCT (LOG.RID) FROM LOG WHERE = LOG.TIMESTAMP BETWEEN TO_DATE('3/06/2013 23:59:00', 'MM/ DD/YYYY hh24:mi:ss ') AND TO_DATE('3/06/2013 23:59:00', 'MM/DD/YYYY hh24:mi:ss ') 有效吗?
-
如果我将
:fromDateParameter替换为'3/06/2013 20:00:00'效果很好。 -
好的...你能告诉我 :fromDateParameter 的确切值是多少吗?可能与这种格式不匹配 MM/DD/YYYY hh24:mi:ss
-
好吧,
TO_DATE正在转换为该特定格式,它不必“匹配”。你可以在我上面的代码中看到:fromDateParameter的值。fromDateParameter.Value = "'3/06/2013 20:00:00'";
标签: c# sql visual-studio-2010 oracle oracle11g