我试图找出某一天的用电量平均在一周内使用下列查询:我可以在PL/SQL查询的where子句中使用to_char函数吗?
SELECT avg(volume)
FROM v_nem_rm16
WHERE to_char(day, 'day') = 'monday';
其中v_nem_rm16是一张桌子和体积,当天是其列,我的查询返回null什么我更改日期值“星期一”,“星期二”,....
是这个查询错了吗?
我试图找出某一天的用电量平均在一周内使用下列查询:我可以在PL/SQL查询的where子句中使用to_char函数吗?
SELECT avg(volume)
FROM v_nem_rm16
WHERE to_char(day, 'day') = 'monday';
其中v_nem_rm16是一张桌子和体积,当天是其列,我的查询返回null什么我更改日期值“星期一”,“星期二”,....
是这个查询错了吗?
实际上'DAY'返回的是右侧的填充空间。 如果你使用'RTRIM',那么你可以避免空值。
SELECT avg(volume)
FROM v_nem_rm16
WHERE RTRIM(to_char(day, 'day')) = 'monday';
我宁愿使用不同的日期格式to_char DAY是nls依赖的,这是不好的(例如你的软件在西班牙将失败)。 d返回号码,以便在你的情况下,查询应该像
SELECT avg(volume)
FROM v_nem_rm16
WHERE RTRIM(to_char(day, 'd')) = 1;
那么,这是避免不必要错误的好方法,非常感谢,顺便说一下,如果我错了,你能纠正我:1代表星期一,2代表星期二,...,7代表星期天? – dhssa
我的错 - “d”是NLS-dependend为好,为了让您的PLSQL稳定,你可以使用RTRIM(TO_CHAR(日,“天”,“NLS_DATE_LANGUAGE =美国”))=用NLS的明确提及“星期一”字符集 –
非常感谢你,它的工作原理完美的,我已经再次学到了新的东西 – dhssa
另外,使用'TO_CHAR(日,“fmday”)' –