我試圖找出某一天的用電量平均在一週內使用下列查詢:我可以在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」)' –