【问题标题】:sqldeveloper outputs correct result for count(*) while sqlplus results zerosqldeveloper 为 count(*) 输出正确结果,而 sqlplus 结果为零
【发布时间】:2014-09-15 14:03:10
【问题描述】:

我在 sqlplus 和 sqldeveloper 中得到不同的 count(*) 输出。 数据库是 Oracle 11G。

SQL 开发人员

从 table1 中选择 count(*) 其中 web_ck_d = to_char(sysdate-1,'DD-MON-YY'); 数数(*) 1083171

Sqlplus

SQL> Select count(*) from table1 where web_ck_d = to_char(sysdate-1,'DD-MON-YY');
COUNT(*)
      0

该表在 all_tables 中有 NUM_ROWS-357238869、BLOCKS-14978755、PARTITIONED-YES。

不明白为什么 sqlplus 的结果是 0。 请帮忙。

【问题讨论】:

  • 您是否对其中一项进行了未提交的更改?
  • 为什么要将日期存储为 varchar?
  • 所有更改都已提交。我正在检查这最后 3 天。对于其他表,在 sqlplus 和 sqldeveloper 中都没有问题并且输出正确的结果。
  • 您可能引用了错误的表,请检查同义词并尝试 schemaname.tablename。

标签: oracle


【解决方案1】:

当您使用自定义日期格式时,如果 oracle 认为它不合适,它会在会话中查找默认日期格式。

Sql-developer 有自己的 session,sqlplus 也有自己的。 Sql developer的日期格式在NLS日期参数中指定,可以从: Tools > Preferences > Database > NLS查看。

您可以使用以下查询在 sql plus 中检查日期

select sysdate from dual;

您可以设置所需的日期格式如下:

alter session set NLS_TIMESTAMP_FORMAT='DD-MON-YYYY HH24:MI:SS.FF';

您可以在此处使用您想要的格式。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-11-09
    • 1970-01-01
    • 2014-05-28
    • 1970-01-01
    • 1970-01-01
    • 2018-08-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多