我可以在PL / SQL查询的where子句中使用to_char函数吗?

时间:2013-06-24 05:50:45

标签: sql date plsql dayofweek

我试图通过以下查询找出一周中某一天的平均电量:

SELECT avg(volume)
FROM v_nem_rm16
WHERE to_char(day, 'day') = 'monday';

其中v_nem_rm16是一个表和volume,day是它的列,我的查询返回null,无论我更改日期值'monday','tuesday',....

这个查询错了吗?

2 个答案:

答案 0 :(得分:3)

实际上,“DAY”返回时右侧有填充空格。 如果使用'RTRIM',则可以避免使用空值。

SELECT avg(volume)
FROM v_nem_rm16
WHERE RTRIM(to_char(day, 'day')) = 'monday';

答案 1 :(得分:2)

我宁愿使用不同的日期格式to_char DAY依赖于nls依赖(例如你的软件在西班牙会失败)。 D返回数字,因此在您的情况下查询应该看起来像

SELECT avg(volume)
FROM v_nem_rm16
WHERE RTRIM(to_char(day, 'd')) = 1;