Visual Basic - consulta campo datetime + like

Life is soft - evento anual de software empresarial
   
Vista:

consulta campo datetime + like

Publicado por molek (20 intervenciones) el 17/12/2008 14:51:40
Buenos dias tengo un problema para recuperar datos de una tabla en SQL server resulta que tengo un campo datetime y deseo ver la consulta de los dias correspondientes al actual ingresando 17/12/2008 por ejemplo en una consulta SQL

asi select * from requerimientos where horainicial like '%" + 16/12/2008 + "%'

y no me genera ningun registro entonces cambio la consulta por que veo que en la tabla de SQL server se guardan diferente aaaa-mm-dd y me genera registros:

select * from requerimientos where horainicial like '%2008%'

todos los de este año, pero deseo los de un dia en especifico y hago la siguiente consulta

select * from requerimientos where horainicial like '%2008-12-17%'

2008-12-17 aaaa-mm-dd es el formato como se guardan los datos en SQL server a pesar de que cuando los guardo desde un form de visual basic son asi 17/12/2008 + datos hora por eso indico la consulta asi pero no me devuelve ningun regsitro

Muchas gracias por la colabora.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:consulta campo datetime + like

Publicado por Jimmy Torres Fonseca (134 intervenciones) el 17/12/2008 15:22:52
Para cambiar el formato de fecha de SQL a como lo deseas antes de ejecutar las consultas debes incluir esto:

SET DATEFORMAT DMY

Si quieres los registros de un dia en especifico debes utilizar un igual (=)

"SELECT * FROM REQUERIMIENTOS WHERE HORAINICIAL = '16/12/2008'"

Para hacer consultas con fechas debes incluir la fecha en comillas simple si es que tienes una fecha especifica de la siguiente manera:

"SELECT * FROM REQUERIMIENTOS WHERE HORAINICIAL = '16/12/2008'"

Pero si utilizas variables por ejemplo el valor de un control DateTimePicker sería de la siguiente manera:

"SELECT * FROM REQUERIMIENTOS WHERE HORAINICIAL = '" & DateTimePicker1.Value & "'"

Y por último si la fecha la especificas en un TextBox, MaskEdBox, o variable donde el resultado sea un string y no un datetime, puedes utilizar un función para convertirlo a datetime (obviamente sabiendo de antemano que el formato del string es adecuado para convertirlo en una fecha):

Supongamos que en la variable texto de tipo string está contenida una fecha:

"SELECT * FROM REQUERIMIENTOS WHERE HORAINICIAL = '" & CDate(texto) & "'

Espero te sirva, saludos!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Aguna aclaración!

Publicado por P3L30N (701 intervenciones) el 17/12/2008 15:42:39
El operador Like se utiliza como caracter comodín para buscar aproximaciones. Para buscar campos exactos es mejor utilizar el operador igual (=).
No digo que no funcione Like '% Buscado %' sino que es mas rápido y eficiente utilizar el operador de igual.

Para contatenar cadenas, VB utiliza el símbolo de ampersand (&). El operador mas (+) sólo funciona como concatenador en variables de tipo String, en este caso que expones, lo que está haciendo es intentar sumar los valores.

Aunque veas que los datos se guardan en el formato yyyy-mm-dd en realidad SQL Server los guarda en formato yyyymmdd.

Expuesto lo anterior, prueba a poner la consulta así:
Fecha = "17/12/2008"
Select * From requerimientos Where horainicial = '" & Format(Fecha, "yyyymmdd") & "'"

devuelve los registros cuya fecha sea el indicado en la variable Fecha. Si quieres devolver los registros que coincidan fecha y hora:
Fecha = "17/12/2008 23:11:54"
Select * From requerimientos Where horainicial = '" & Format(Fecha, "yyyymmdd hhMMss") & "'"

Feliz Navidad!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Aguna aclaración!

Publicado por molek (20 intervenciones) el 18/12/2008 18:13:41
hola.
hago lo que me dices dandole formato asi la variable fecha contiene el valor 2008-12-16 10:10:45, recuperado directamente de la base de datos SQL, asi

Select * From requerimientos where horainicial ='" & Format(fecha, "yyyymmdd hhMMss") & "'", conn

y me genera un error que dice:
la conversion del tipo de datos char a datetime produjo un valor datetime fuera del intervalo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

re: Funciona

Publicado por molek (20 intervenciones) el 19/12/2008 21:27:58
la sentencia que estaba usando era :
Select * From requerimientos where horainicial ='" & Format(fecha, "yyyymmdd hhMMss") & "'", conn

pero tiene unos errores:
cuando se especifica el formato es yyyymmdd hh:MM:ss eso es todo lo que se cambia. pilas con el espacio entre la ultima d y la siguiente h.

Select * From requerimientos where horainicial ='" & Format(fecha, "yyyymmdd hh:MM:ss") & "'", conn

Esto me funciona correctamente siendo fecha: 19/12/2008 16:31:20
la variable fecha es declarada como string

Ojala les sirva de ayuda
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar