Tenia un SQL que filtraba registros por hora -sin fecha-, o basado en un horario.
El caso era, obtener el nombre del horario en el cual una persona deslizaba/marcaba su gafete/badge.
Funcionaba en Access sin problemas:
" SELECT -campos-" +
" FROM -tabla- "+
" WHERE HoraInicial < #" + DateTime.Now.ToShortTimeString() + "#" +
" AND HoraFinal> #" + DateTime.Now.ToShortTimeString() + #'";
Donde "DateTime.Now.ToShortTimeString()" es la hora en que la persona deslizaba su gafete.
Pero ahora que modifico el programa -en C# - y leer los datos desde SQL Server, esto pues no funciona, creí que solo reemplazando los # (gatitos o pound o sharp) por ' (comilla simple) funcionaria, pero no fue así.
Para no reinventar la rueda, googleé por unos minutos, pero las respuestas que encontraban no me satisfacian porque se tenia que crear funciones y agregarlas a la base de datos, cosa que para este caso no es lo recomendable y hubo otras que estan completamente equivocadas. por ejemplo no distinguen entre AM y PM, o bien tienes que hacer malabares con la fecha para obtener la hora, etc .
Después de haber visto algunas otras soluciones, hubo una que me ayudo a completar el filtro que necesitaba, finalmente quedo :
" SELECT -campos-" +
" FROM -tabla-" +
" WHERE " +
" CONVERT(VARCHAR,HoraInicial ,108) <= '" + DateTime.Now.ToString("HH:mm:ss:") + "' " +
" AND " +
" CONVERT(VARCHAR,HoraFinal ,108) >= '" + DateTime.Now.ToString("HH:mm:ss:") + "'";
Esto es para mi futura referencia, y por si caso a alguien mas le pueda servir.
No hay comentarios.:
Publicar un comentario
Y USTED QUE OPINA?