【问题标题】:In what format does Oracle expect a date value, and how can I give Oracle what it wants?Oracle 期望日期值采用什么格式,我怎样才能为 Oracle 提供它想要的?
【发布时间】:2012-05-04 08:37:52
【问题描述】:

“AVAILABLEDATE”是 DATE 类型的列。

我可以通过 Toad 查询表格并获得结果。但是,在 (Winforms/C#/dotConnect) 代码中,它不起作用。

ocmd.Parameters.Add("AVAIL_DATE", getDateToQuery());

我很确定问题出在我传递日期的方式上:

private DateTime getDateToQuery() {
  DateTime candidateVal = dateTimePickerScheduleDate.Value;
  if (candidateVal.Equals(null)) {
    candidateVal = DateTime.Now;
  }
  return candidateVal;
}

...但我不知道如何强制日期值采用 Oracle 可以识别的格式。

【问题讨论】:

  • 您在命令中添加的选择语句是什么? .NET 和 Toad 的参数标记不同。
  • 你得到什么错误信息?
  • 没有错误消息,只是没有返回任何值;现已修复 - 见下文。

标签: c# winforms oracle datetime dotconnect


【解决方案1】:

这可行,但我不确定这是最好的方法:

int iFromYear = dateTimePickerScheduleDate.Value.Year;
int iFromMonth = dateTimePickerScheduleDate.Value.Month;
int iFromDay = dateTimePickerScheduleDate.Value.Day;
. . .
ocmd.Parameters.Add("AVAIL_DATE", new DateTime(iFromYear, iFromMonth, iFromDay));

【讨论】:

    【解决方案2】:

    尝试添加参数类型:

    OracleParameter p1 = new OracleParameter("AVAIL_DATE", OracleDbType.Date);
    p1.Value = getDateToQuery();
    ocmd.Parameters.Add(p1);
    

    另外,请确保您按顺序提供参数,我记得上次使用 Oracle 时,参数的名称被忽略了。

    【讨论】:

    • 看起来很优雅,但它不起作用——虽然我笨拙的方式起作用了......?
    • @ClayShannon 除了类型我看不出有什么区别,你有没有改变什么?也许您的函数 getDateToQuery() 没有返回您需要的值?
    猜你喜欢
    • 1970-01-01
    • 2012-04-01
    • 1970-01-01
    • 2012-03-26
    • 2012-02-07
    • 2012-05-08
    • 2020-10-15
    • 2022-11-15
    • 1970-01-01
    相关资源
    最近更新 更多