Necesito información sobre realizar consultas a la base de datos utilizando JSP

Sacar el mes o el día o el año de
Una fecha que recojo de un campo de
la base de datos después de hacer un select si lo tengo dentro de un while
Y quiero que me lo haga para todos los registros que recoge la select. Mi problema es que hago un "getdate" y me trae la fecha en formato: año/mes/dia
Y quiero dia/mes/año. Mi código es el siguiente y muy poco:
<%
{
Standar std = new Standar();
//Conexion a la BBDD
Connection con = std.getConexion();
Statement stm = con.createStatement();
//Recojo el parámetro id de Vacaciones.jsp
String id = request.getParameter("id");
//String nombre = request.getParameter("Nombre");
//String apellidos = request.getParameter("Apellidos");
//Nombre y Apellidos del Usuario
String queryUsuario = "select usu_nombre,usu_apellido from usuarios where usu_id ="+toInt(id);
ResultSet resUsuario = stm.executeQuery(queryUsuario);
//int fechainicio = resRango.getInt("fechainicio");
//int fechafin = resRango.getInt("fechafin");
//int laborales = resRango.getInt("laborales");
//int restante = resRango.getInt("restante");
%>
<link rel="stylesheet" href="<%=HttpPortletRendererUtil.absoluteLink(request,"../intranet.css")%>" type="text/css">
<body background="<%=HttpPortletRendererUtil.absoluteLink(request,"../Img/fondo_f.jpg")%>">
<table width="500" border="1" cellpadding="0" cellspacing="0" align="center" bordercolor="#003366">
<tr>
<td valign="middle" height="43" colspan="4" align="center" class="formularioNegrita" >Consulta
de Vacaciones Disfrutadas</td>
</tr>
<%
while(resUsuario.next())
{
%>
<tr>
<td width="100" height="29" valign="middle" align="center" class="formularioNegrita" >Usuario:</td>
<td valign="middle" colspan="3" align="left" class="formularioNegrita" ><%=resUsuario.getString("usu_nombre")+' '+resUsuario.getString("usu_apellido")%></td>
</tr>
<tr>
<%
}
resUsuario.close();
//Calculamos los rangos de vacaciones disfrutados por el usuario de Portal Conectado
String queryRango = "select vac_finicio,vac_ffin,vac_numdias,vac_diapend from vacaciones where vac_usu_id ="+toInt(id);
ResultSet resRango = stm.executeQuery(queryRango);
%>
<td valign="middle" height="26" class="formularioNegrita" align="center" >Fecha
Desde</td>
<td width="157" valign="middle" align="center" class="formularioNegrita" >Fecha
Incorporación</td>
<td width="109" valign="middle" align="center" class="formularioNegrita" >Días
Laborales</td>
<td width="124" valign="middle" align="center" class="formularioNegrita" >Días
Pendientes</td>
</tr>
<%
Calendar hoy = new GregorianCalendar();
int dia = hoy.get(Calendar.DAY_OF_MONTH);
int mes = hoy.get(Calendar.MONTH)+1;
int ano = hoy.get(Calendar.YEAR);
//resRango.previous();
while (resRango.next())
{
%>
<tr>
<td valign="middle" height="25" align="center" class="formularioNegrita" ><%=resRango.getDate("vac_finicio")%></td>
<td valign="middle" align="center" class="formularioNegrita" ><%=resRango.getDate("vac_ffin")%></td>
<td valign="middle" align="center" class="formularioNegrita" ><%=resRango.getInt("vac_numdias")%></td>
<td valign="middle" align="center" class="formularioNegrita" ><%=resRango.getInt("vac_diapend")%></td>
</tr>
<%
}
resRango.close();
stm.close();
con.close();
}
%>
</table>
<table width="64%" border="0" cellpadding="0" cellspacing="0" align="center">
<tr>
<td width="497" height="34" valign="middle" align="center">
<input type="submit" name="Submit" value="Cerrar" onclick="window.close();">
</td>
</tr>
</table>
Muchísimas gracias y un saludo

1 respuesta

Respuesta
1
La manera de formatear la fecha como quieras es usar la clase SimpleDateFormat, ejemplo:
SimpleDateFormat formatoFecha = new SimpleDateFormat("dd MM YYYY);
De esta clase tienes dos métodos que te serán utilices, si tienes un objeto de tipo Date, puedes hacer.
String fecha=formatoFecha.format(miDate);
Y esto te devolverá la fecha en tu formato.
Si lo que quieres es obtener un Date a partir de un String, la manera es:
Date fecha=formatoFecha.parse("12121944");
Esto te creara el objeto Date para tu fecha, si tu formato es mes/dia/año, te creas un SimpleDateFormat y en el constructor le pasas "MMddYYYY", después de parsear, con el otro SimpleDateFormat con tu formato válido, lo aplicas sobre el Date resultante del parseo y obtienes tu fecha en el formato que quieres.
Pongo el siguiente código
Y me pone que no encuentra la clase
SimpleDateFormat.
SimpleDateFormat formatoFecha = new SimpleDateFormat("DD/MM/YYYY");
String fecha = formatoFecha.format(resRango.getDate("vac_numdias"));
out.println(fecha);
Podrías mirar el código en el "while"
que es donde yo quiero formatear los
campos de fecha que recojo en la select de arriba:
<%@ page import="java.lang.*" %>
<%@ page import="java.sql.*" %>
<%@ page import="java.util.*" %>
<%@ page import="oracle.jdbc.driver.*" %>
<%@ page import="oracle.portal.provider.v1.*" %>
<%@ page import="oracle.portal.provider.v1.http.*" %>
<%@ page import="javax.mail.*" %>
<%@ page import="javax.mail.internet.*" %>
<%@ page import="intranet.*" %>
<%@ page import="intranet.conexion.*" %>
<%
{
Standar std = new Standar();
//Conexion a la BBDD
Connection con = std.getConexion();
Statement stm = con.createStatement();
//Recojo el parámetro id de Vacaciones.jsp
String id = request.getParameter("id");
//Nombre y Apellidos del Usuario
String queryUsuario = "select usu_nombre,usu_apellido from usuarios where usu_id ="+std.toInt(id);
ResultSet resUsuario = stm.executeQuery(queryUsuario);
%>
<link rel="stylesheet" href="<%=HttpPortletRendererUtil.absoluteLink(request,"../intranet.css")%>" type="text/css">
<body background="<%=HttpPortletRendererUtil.absoluteLink(request,"../Img/fondo_f.jpg")%>">
<table width="500" border="1" cellpadding="0" cellspacing="0" align="center" bordercolor="#003366">
<tr>
<td valign="middle" height="43" colspan="4" align="center" class="formularioNegrita" >Consulta
de Vacaciones Disfrutadas</td>
</tr>
<%
while(resUsuario.next())
{
%>
<tr>
<td width="100" height="29" valign="middle" align="center" class="formularioNegrita" >Usuario:</td>
<td valign="middle" colspan="3" align="left" class="formularioNegrita" ><%=resUsuario.getString("usu_nombre")+' '+resUsuario.getString("usu_apellido")%></td>
</tr>
<tr>
<%
}
resUsuario.close();
//Calculamos los rangos de vacaciones disfrutados por el usuario de Portal Conectado
String queryRango = "select vac_finicio,vac_ffin,vac_numdias,vac_diapend from vacaciones where vac_usu_id ="+std.toInt(id);
ResultSet resRango = stm.executeQuery(queryRango);
%>
<td valign="middle" height="26" class="formularioNegrita" align="center" >Fecha
Desde</td>
<td width="157" valign="middle" align="center" class="formularioNegrita" >Fecha
Incorporación</td>
<td width="109" valign="middle" align="center" class="formularioNegrita" >Días
Laborales</td>
<td width="124" valign="middle" align="center" class="formularioNegrita" >Días
Pendientes</td>
</tr>
<%
SimpleDateFormat formatoFecha = new SimpleDateFormat("DD/MM/YYYY");
String fecha = formatoFecha.format(resRango.getDate("vac_numdias"));
out.println(fecha);
//resRango.previous();
while (resRango.next())
{
%>
<tr>
<td valign="middle" height="25" align="center" class="formularioNegrita" ><%=resRango.getDate("vac_finicio")%></td>
<td valign="middle" align="center" class="formularioNegrita" ><%=resRango.getDate("vac_ffin")%></td>
<td valign="middle" align="center" class="formularioNegrita" ><%=resRango.getInt("vac_numdias")%></td>
<td valign="middle" align="center" class="formularioNegrita" ><%=resRango.getInt("vac_diapend")%></td>
</tr>
<%
}
resRango.close();
stm.close();
con.close();
}
%>
</table>
<table width="64%" border="0" cellpadding="0" cellspacing="0" align="center">
<tr>
<td width="497" height="34" valign="middle" align="center">
<input type="submit" name="Submit" value="Cerrar" onclick="window.close();">
</td>
</tr>
</table>
Para que funcione, tienes que meter dentro de los import la clase, que esta en java.text.SimpleDateFormat, sino te saltara un ClassNotFound, respecto a lo de while, lo que tienes que hacer es asignar el getDate a una variable de tipo Date, y esta es la que tienes que formatear, entonces te devolverá el String con los datos en tu formato...
Por cierto, el constructor lo tienes mal, pusiste:
SimpleDateFormat formatoFecha = new SimpleDateFormat("DD/MM/YYYY");
y es;
SimpleDateFormat formatoFecha = new SimpleDateFormat("dd/MM/YYYY");
Un pequeño fallo... echate una ojeada a la documentación del API del JDK

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas