Consulta sobre manejo de fechas en stored procedur

Tengo la siguiente confusión al convertir un string a fecha con el convert.
Tengo el siguiente SP.
@FECHASP VARCHAR(10)
SELECT * FROM TABLA1 WHERE FECHA = CONVERT(DATETIME,@FECHASP,103)
Estoy pasando la fecha como string formateada dd/mm/yyyy donde dentro del SP utilizo el convert con estilo 103, el cual corresponde a 'dd/mm/yyyy'.
¿Es necesario que el campo Fecha lo formatee con el convert con el mismo estilo? O ¿Al hacer CONVERT(DATETIME,@FECHASP,103)en el parámetro recibido me lo compara correctamente?
¿Me podrías explicar un poco más sobre la utilización del convert(datetime,,)?

1 respuesta

Respuesta
1
Si vos le pasas un parámetro que corresponde a 'dd/mm/yyyy'
Dentro del store lo declaras como
@fecha datetime
y en la consulta haces
selec * from tabla where fecha = @fecha
Así de simple
Te recomiendo otra cosa, para evitar confusiones, ya que si vos le pasas como parámetro una fecha dd/mm/yyyy puede confundirse el mm por el dd, dependiendo del idioma del sistema.
Yo por lo general, le paso la fecha en formato yyyymmdd
el día de hoy seria 20030514
lo recibe como
@fecha datetime
la consulta seria
select * from tabla where fecha = @fecha
La diferencia es que te aseguras que no confunda el mes con el día
Hola Nico tu aclaración me queda clarísima que es más fácil declarar el parámetro de tipo Datetime, pero mi problema es con el convert, ya que necesito saber que es lo que hace el SQL al encontrarse con CONVERT(DATETIME,@FECHASP,103), yo se que el estilo 103 me indica que el parámetro debe venir formateado con 'dd/mm/yyyy'.
Entonces la pregunta es la siguiente ¿EL SQL Compararía correctamente la fecha, aunque no se formatee el campo de la tabla con convert?
Que es lo correcto al usar el convert
Este : SELECT * FROM TABLA1 WHERE FECHA = CONVERT(DATETIME,@FECHASP,103)
O esto : SELECT * FROM TABLA1 WHERE CONVERT(DATETIME,FECHA,103) = CONVERT(DATETIME,@FECHASP,103)
Aparentemente, funciona bien
El manejo de fechas es algo complejo
Pero lo que decís es coherente, tendría que funcionar así

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas