Dzięki Misiek za pomoc. Myślałem nad tym ale nie wpadłem na to to_char :-D
Teraz pojawił się kolejny problem - z GROUP BY ....
Mam funkcje która tworzy dynamicznie kwerendy:
public PreparedStatement querryBarChartAndLineChart(String okres, String start, String end) throws SQLException
{
Connection con = databaseAccess.getOracleDbConnection();
String sql = "SELECT to_char(data, ? ), SUM(wartosc) as suma FROM test WHERE data >= to_date( ? ,'YYYY-MM-DD HH24:MI') and data <= to_date( ? ,'YYYY-MM-DD HH24:MI') GROUP BY to_char(data, ?) ORDER BY to_char(data, ?)";
PreparedStatement prepState = con.prepareStatement(sql);
prepState.setString(1, okres);
prepState.setString(2, start);
prepState.setString(3, end);
prepState.setString(4, okres);
prepState.setString(5, okres);
return prepState;
Cały czas mam błąd ORA-000979 Not a aroup by expression
Dla testu zmieniełem kwerendę na:
SELECT to_char(data, ? ), SUM(wartosc) as suma FROM test WHERE data >= to_date( ? ,'YYYY-MM-DD HH24:MI') and data <= to_date( ? ,'YYYY-MM-DD HH24:MI') GROUP BY to_char(data, 'YYYY-MM') ORDER BY to_char(data, 'YYYY-MM')";
... wybralem opcje miesiac aby zmienna okres miała wartość 'YYYY-MM' i dalej ten błąd.
Znowu zmieniełem kwerendę:
SELECT to_char(data, 'YYYY-MM' ), SUM(wartosc) as suma FROM test WHERE data >= to_date( ? ,'YYYY-MM-DD HH24:MI') and data <= to_date( ? ,'YYYY-MM-DD HH24:MI') GROUP BY to_char(data, 'YYYY-MM') ORDER BY to_char(data, 'YYYY-MM')";
... i działa.
Od razu mówię że wartość zmiennej jest identyczna i jest ona Stringiem ( String okres = "YYYY-MM")