none
String a dateTime RRS feed

  • Pregunta

  • Hola, tengo una tabla con un nvarchar(10)  el cual contiene una fecha con formato (dd-mm-yyyy) lo que intento hacer es esto

    (Select fecha from registros where fecha between '01-01-2016' and '31-01-2016')

    al parecer si funciona pero si pongo un mes diferente lanza mal los datos, lo que quiero es poder cambiar ese string de formato (dd-mm-yyyy) a un dateTime con formato (yyyy-mm-dd) por que de esa manera si respeta la consulta

    muchas gracias

    viernes, 2 de septiembre de 2016 20:37

Respuestas

  • Podrías hacerlo así:

    (Select fecha from registros where convert(datetime,fecha,105) between '20160101' and '20161231')

    El Convert te pasa el campo a datetime para que las comparaciones sean correctas, y las constantes hay que escribirlas en algún formato que pueda convertirse a fecha implícitamente. Si esto último te resulta problemático, puedes también ponerles un convert igual que el del campo de la tabla.

    • Marcado como respuesta JlarzateC viernes, 2 de septiembre de 2016 21:32
    viernes, 2 de septiembre de 2016 21:01

Todas las respuestas

  • Podrías hacerlo así:

    (Select fecha from registros where convert(datetime,fecha,105) between '20160101' and '20161231')

    El Convert te pasa el campo a datetime para que las comparaciones sean correctas, y las constantes hay que escribirlas en algún formato que pueda convertirse a fecha implícitamente. Si esto último te resulta problemático, puedes también ponerles un convert igual que el del campo de la tabla.

    • Marcado como respuesta JlarzateC viernes, 2 de septiembre de 2016 21:32
    viernes, 2 de septiembre de 2016 21:01
  • JlarzateC,

    Un tipo datetime no tiene formato específico, el valor de una fecha se almacena como un valor numérico, por tanto, lo que debes de hacer es intentar convertir el valor almacenado en la columna 'fecha' a un tipo de fecha, por otro lado, acostumbra a escribir literales de fecha bajo un formato estándar como: 'YYYY-MM-DD':

    SELECT fecha FROM registros WHERE CONVERT(date, fecha) BETWEEN '2016-01-01' AND '2016-01-31';


    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    viernes, 2 de septiembre de 2016 21:04
  • Hola gracias por tu respuesta, funciona el código pero aun me arroja lo de los otros meses

    solo quiero lo de enero pero tamben arroja los resultados de febrero,etc...

    viernes, 2 de septiembre de 2016 21:24
  • hola williams, este código no me devuelve valores
    viernes, 2 de septiembre de 2016 21:30
  • ok ya lo solucioné, como solo copié y pegue la consulta no me di cuenta que estaba todo el año en la consulta, muchas gracias por tu tiempo
    viernes, 2 de septiembre de 2016 21:32