【问题标题】:SQL query does not work in VB6, but the same query works properly in OracleSQL 查询在 VB6 中不起作用,但相同的查询在 Oracle 中可以正常工作
【发布时间】:2012-12-03 08:23:21
【问题描述】:

我们编写了以下查询,它在 Oracle 中返回记录,但是当通过 VB6.0 执行相同的查询时,它返回 0 条记录。

Select * 
 from crdh 
where expdate between (TO_DATE('03-Dec-2002','DD-MON-YYYY')) 
  and (TO_DATE('31-Dec-2012','DD-MON-YYYY')) 
  and CS = 'AA'

谁能帮忙?

【问题讨论】:

  • 请显示在VB6中执行查询的代码。
  • 我不确定 oracle 是否会对 where and 部分感到满意​​
  • 正如@SWeko 所说-您是否在删除后尝试过以及从哪里和
  • 我错误地添加了'where and'

标签: sql oracle vb6 oracle10g


【解决方案1】:

假设您的问题中的where and 只是一个错字,而不是您的查询的一部分,那么您的问题的原因可能是 NLS 问题;您的格式字符串的“MON”部分取决于文化。您可以通过在环境中设置语言来解决这个问题,但 IMO 最好使用与语言无关的数字月份格式,即

Select * 
 from crdh 
where expdate between (TO_DATE('03-12-2002','DD-MM-YYYY')) 
  and (TO_DATE('31-12-2012','DD-MM-YYYY')) 
  and CS='AA'

【讨论】:

  • 或者更好的是恕我直言,使用 ANSI 语法和 ISO 日期格式...“日期 '2002-12-03' 和 2012'12'31 之间的扩展”
  • @DavidAldridge 你的意思是expdate between date '2002-12-03' and date '2012-12-31'
  • @JackDouglas 是的,非常……抱歉,我同时在吃吐司
猜你喜欢
  • 2018-04-12
  • 1970-01-01
  • 1970-01-01
  • 2018-10-31
  • 1970-01-01
  • 2018-01-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多