我正在编写这个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;
答案 0 :(得分:0)
您以错误的方式使用to_date()
在to_date()
值上调用date
将date
值转换为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
。
但你应该问一个新问题 - 包括样本数据和表格定义。