Ayuda format

Que tal compañeros, el motivo de entrada es la siguiente, tengo una tabla en donde muestro registros de fechas, estoy trabajando con variables de fecha en MySQL, la pregunta es, puedo formatear esas fechas para enviarlas a la tabla con algun formato en especial com por ejemplo: "EEEE dd 'de' MMMM 'del' yyyy 'a las' hh:mm a"

Actualmente lo hago de la siguiente manera:

tengo una clase llamada DAOReminder

public class DAORecordatorio {

    Conexion mysql = new Conexion();
    Connection cn = mysql.conectar();
    String sSQL = "";
    public Integer totalRegistros;

    public DefaultTableModel mostrar(String buscar) {
        DefaultTableModel modelo;
        String[] titulos = {"ID Recordatorio", "ID Usuario", "Titulo", "Detalle", "Creado", "Vencimiento", "Responsable"};
        String[] registro = new String[7];

        totalRegistros = 0;
        modelo = new DefaultTableModel(null, titulos);

        sSQL = "SELECT * FROM recordatorio WHERE titulo LIKE '%" + buscar + "%' ORDER BY idrecordatorio";

        try {
            Statement st = cn.createStatement();
            ResultSet rs = st.executeQuery(sSQL);

            while (rs.next()) {
                registro[0] = rs.getString("idrecordatorio");
                registro[1] = rs.getString("idusuario");
                registro[2] = rs.getString("titulo");
                registro[3] = rs.getString("detalle");  
                registro[4] = rs.getString("creado");          // Quiero que estos dos campos pasarlos con un formato especifico
                registro[5] = rs.getString("vencimiento");  // como por ejemplo "EEEE dd 'de' MMMM 'del' yyyy 'a las' hh:mm a"
                registro[6] = rs.getString("responsable");

                totalRegistros += 1;
                modelo.addRow(registro);
            }
            return modelo;
        } catch (SQLException e) {
            JOptionPane.showConfirmDialog(null, "Se ha detectado el siguiente error: " + e);
            return null;
        }
    }
}

y si se puede hacer esto, como lo implemento...

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.

No, no puedes. Si almacenas

No, no puedes. Si almacenas fechas obtienes fechas de regreso. Lo que puedes hacer es después de sacarlas darles formato.

Date date = rs.getDate("vencimiento");
String mensaje = String.format("%1$tA %1$td de %1$tm del %1$ty  a las %1$th:%1$m", date);

Para ver como usar los campos de formato revisa la documentación aquí:

http://docs.oracle.com/javase/8/docs/api/java/util/Formatter.html

En Date/Time Conversions

Imagen de arterzatij

Puedes siempre y cuando

Puedes siempre y cuando cambies los campos de tus tablas a cadenas y no como datetime o date, lo cual te deja en desventaja si quieres hacer busquedas por fechas. Y aun asi tendras que darle formato antes de almacenar a la tabla tal como lo indica Oscar :)

Imagen de chicowed

Muchas Gracias, pero sigo sin

Muchas Gracias, pero sigo sin resolverlo, he intentado de varias maneras, pero por mi falta de experiencia con fechas en java se me esta dificultando,

Tengo una tabla en mi BD de tipo Timestamp, como se puede ver en mi codigo hago una consulta, pero de tipo String, y cuando esos valores de fachas se pasan a la tabla me muestra algo como esto: 2014-10-30 01:18:08.0 y ese .0 es el que me esta volviendo loco, porque en la tabla tengo un evento MouseClicked que pasa los datos a un JDateChooser, y como veran pues me mada un fecha erronea porque el formato que admite el JDataCooser es del tipo "yyyy-mm-dd hh:mm:ss", espero haberme explicado, alguna sugerencia es vienvenida, espero que a alguien le halla pasado lo mismo y pueda apoyarme diciendome como lo soluciono

Imagen de chicowed

Listo

Listo Solucionado.

 Timestamp dateCreado = rs.getTimestamp("creado");
                registro[4] = String.format("%1$tY-%1$tm-%1$td  %1$tH:%1$tM:%1$tS", dateCreado);

por si alguien le sirve.

«java.text.SimpleDateFormat»

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
registro[4] = sdf.format(dateCreado);

  ▲ ¿Ya intentaste esto?

  NOTA: Considera utilizar una constante (de sdf) si vas a ejecutar esto más de una vez.

Imagen de ezamudio

pero en thread

Sí es mucho más rápido el SimpleDateFormat que el String.format, pero recuerda que SimpleDateFormat no es thread-safe por lo tanto una instancia debe ser utilizada solamente por un hilo a la vez.

Y complementando las respuestas, solamente recomiendo que se conserve el dato como Timestamp y se maneje así por todas partes, es mucho más útil. Solamente hay que formatearlo cuando se va a presentar al usuario. Tener el Timestamp disponible en el modelo de datos es mucho mejor porque permite hacer cualquier tipo de aritmética de fechas (por ejemplo para presentar el típico "hace 2 horas y 54 minutos" que está tan de moda ahora en páginas web). Incluso hay componentes de interfaz gráfica que pueden presentar directamente un Timestamp, como un calendario o reloj editable; eso se pierde al convertirlo en cadena desde que se obtiene de la base de datos.

Imagen de chicowed

Muchas Gracias a todos por

Muchas Gracias a todos por sus comentarios, me sirvió de mucho para entender un poco mas sobre el trabajo con fechas, aplique todos sus métodos y me funcionaron todo perfectamente, no entendi muy bien lo que comentas @ezamudio lo de thread-safe, pero al final me decidí por usar lo siguiente.

                Timestamp dateCreado = rs.getTimestamp("creado");
                Timestamp dateVencimiento = rs.getTimestamp("vencimiento");

                SimpleDateFormat formato = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss a");

                registro[4] = formato.format(dateCreado);    
                registro[5] = formato.format(dateVencimiento);

A mi forma de parecer esta mejor, en este caso solo es una consulta de los datos almacenados en la DB para mostrarlos al usuario, para trabajar con las fechas lo estoy haciendo como dice el SR. ezamudio ya que es mas fácil.
Muchas Gracias....

Formato en la vista

Sólo para recordarte que la instancia de java.sql.Timestamp no debiera formatearse hasta el momento de mostrarla en la vista (tal como @ezamudio ya recomendó).