Discrepancia de zona horaria en mysql y java

Tengo una consulta en mysql que compara 2 fechas como esta

convert_tz(updatedDate,'+05:30','-05:00') < ?

la función de conversión devuelve el valor de column createddate en US Time. cuando ejecuto esta consulta en el buscador de consultas mysql como

convert_tz(updatedDate,'+05:30','-05:00') < '2013-04-14 09:30:00'

me da valores correctos por ejemplo

product    count
-------    ------
    A        123
    B        7

Ahora, estoy configurando esto en java usando PreparedStatement como este

pst.setTimestamp(1, new java.sql.Timestamp(end.getTimeInMillis()));

                rs=pst.executeQuery();
                System.out.println("=====new Open Tickets Query executed=====");
                System.out.println(pst);

la última línea imprime toda la consulta y el conjunto de valores es

convert_tz(updatedDate,'+05:30','-05:00') < '2013-04-14 09:30:00'

Pero me da diferentes valores como este.

product    count
-------    ------
    A        155
    B        19

Entonces, sospeché que es un problema de TimeZone al que cambié mi código

end.setTimeZone(TimeZone.getTimeZone("America/New York"));
pst.setTimestamp(1, new java.sql.Timestamp(end.getTimeInMillis()));

                rs=pst.executeQuery();
                System.out.println("=====new Open Tickets Query executed=====");
                System.out.println(pst);

Pero sigue dando el mismo resultado equivocado.

Más información: Cómo estoy configurando la variable final del calendario

Tengo una aplicación web que me da la cadena de fecha "2013-04-14 09:30:00"

            DateFormat df1=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
                Calendar end=Calendar.getInstance();
                end.setTime(df1.parse(endString));
                end.set(Calendar.HOUR, 9);
                end.set(Calendar.MINUTE, 30);
                end.set(Calendar.SECOND, 0);

Además, para el experimento que probé con el objeto java.util.Date, me da el resultado correcto, ya que el código es

SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
end.setTime(sdf.parse("2012-10-01 00:00:00"));
pst.setTimestamp(1, new java.sql.Timestamp(end.getTime()));

ACTUALIZACIÓN: - Si utilizo un método en desuso, la respuesta es correcta.

 pst.setTimestamp(1, new java.sql.Timestamp(octDate.get(Calendar.YEAR)-1900,octDate.get(Calendar.MONTH),octDate.get(Calendar.DATE),octDate.get(Calendar.HOUR),octDate.get(Calendar.MINUTE),octDate.get(Calendar.SECOND),0));
pst.setTimestamp(2, new java.sql.Timestamp(end.get(Calendar.YEAR)-1900,end.get(Calendar.MONTH),end.get(Calendar.DATE),end.get(Calendar.HOUR),end.get(Calendar.MINUTE),end.get(Calendar.SECOND),0));

ACTUALIZACIÓN 2: - Después de la sugerencia de primera respuesta hice esto.

1) ejecutadoSELECT NOW() en mysql y regresó'2013-04-22 11:56:08'

2) ejecutado

System.out.println(new Date(System.currentTimeMillis()));

salida:Mon Apr 22 11:56:25 IST 2013

significa que ambos sistemas tienen la misma zona horaria

Respuestas a la pregunta(5)

Su respuesta a la pregunta