martes, 17 de septiembre de 2013

Búsqueda de fechas en MySQL con Visual Basic



Al trabajar con fechas en MySQL se nos plantea el problema del formato de la fecha.MySQL almacena las fechas como yyyy/mm/dd (año/mes/dia) y en Visual Basic se trabajan como dd/mm/yyyy (dia/mes/año). Para mi es mas facil guardar las fechas en un campo con formato texto en la base de datos y luego aplicar conversiones de formato para trabajar con ellas.

Ahora supongamos que queremos mostrar todos los registros en los que el año de la fecha sea, por ejemplo el 2012. El campo de la fecha se llama fecha (que original ¿verdad?). Para ello la consulta select sería la siguiente:

SELECT * FROM tabla WHERE year(date_format(str_to_date(fecha,'%d/%m/%Y'), '%Y/%m/%d')) = 2012


A continuación explico como funciona la comprobación del año, paso a paso, desde dentro hacia afuera de la función.

Lo que hacemos es tomar la fecha guardada en el campo fecha que esta en formato texto y convertirla en fecha con str_to_date(fecha, '%d/%m/%Y') con lo que la fecha quedaria como dd/mm/yyyy (dia/mes/año).

Ahora le aplicamos el formato que conoce MySQL condate_format(str_to_date(fecha,'%d/%m/%Y'), '%Y/%m/%d') por lo que tendriamos una fecha yyyy/mm/dd (año/mes/dia) manejable por MySQL.

Por último, Year extrae el año de la fecha (que es comparado con 2012 en este caso)year(date_format(str_to_date(fecha,'%d/%m/%Y'), '%Y/%m/%d')) = 2012.


Este es un fragmento de código de un botón en el que utilizo este sistema:

'Al pulsar el boton se modifica el DataAdapter busquedaDA con la búsqueda para mostrar los registros cuyo año en campo fecha sea 2012. La búsqueda se realiza en la función actualizadatagrid() que también se encarga de mostrar los resultados

Private Sub Button13_Click(sender As System.Object, e As System.EventArgs)Handles BOT_2012.Click
    año = "2012"
    busquedaDA = New MySqlDataAdapter("SELECT * FROM tabla WHERE year(date_format(str_to_date(fecha, '%d/%m/%Y'), '%Y/%m/%d')) = '" & año & "'", conexion)
    actualizadatagrid()
End Sub

No muestro el código de actualizadatagrid() aquí ya que no viene al tema por ahora.

ORIGEN: http://mancampos1.blogspot.com/2012/09/busqueda-de-fechas-en-mysql-con-visual.html

No hay comentarios:

Publicar un comentario