sql查询以获取当前日期和最小日期之间的记录

时间:2016-04-20 10:02:11

标签: sql oracle

我正在编写这个sql查询,但它说现在发现了非数字字符,其中数字是预期的。哪里有错误?

 SELECT dr.*
 from daily_data_reading dr
 where pod_id='01611152005960'
   and DAILY_READING_DATE BETWEEN to_date(' min(daily_reading_date)','DD-MM-YY HH24:MI:SS')+ interval '1' day
     AND to_date('trunc(SYSDATE) 23:59:59','DD-MM-YY HH24:MI:SS') + interval '1' day;

1 个答案:

答案 0 :(得分:0)

您以错误的方式使用to_date()

to_date()值上调用datedate值转换为date是没有意义的。

同样to_date()要求格式化为有效日期的字符串 'min(daily_reading_date)''trunc(SYSDATE) 23:59:59'都不是有效的日期字符串。

所以

to_date('min(daily_reading_date)','DD-MM-YY HH24:MI:SS')+ interval '1' day

需要:

min(daily_reading_date) + interval '1' day

并且

to_date('trunc(SYSDATE) 23:59:59','DD-MM-YY HH24:MI:SS') + interval '1' day

应该是:

AND trunc(SYSDATE) + interval '1' day

所以你的完整查询应该是:

SELECT dr.*
from daily_data_reading dr
where pod_id = '01611152005960'
  and DAILY_READING_DATE BETWEEN min(daily_reading_date) + interval '1' day
                             AND trunc(SYSDATE) + interval '1' day;

但上述查询只会触发下一个错误:如果不应用min(daily_reading_date)子句,则无法使用group by

但你应该问一个新问题 - 包括样本数据和表格定义。