Varchars para fechas en consultas

18/06/2005 - 18:27 por Napoleón Cabrera | Informe spam
Hola gente... en un SP tengo algo como esto...

@diaR integer, @mesR integer, @anoR integer,
@sdiaR varchar(2), @sMesR varchar(2),
@sFecNat varchar(10)

select @diaR = 31
select @mesR = 1
select @anoR = 2005

es lo mejor para llevar al formato desado, lo se, pero no se hacerlo de otra
forma)
if len( @diaR ) <2
begin select @sdiaR = '0' + cast ( @diaR as varchar(2) ) end
else
begin select @sdiaR = cast ( @diaR as varchar(2) ) end

if len( @mesR ) <2
begin select @smesR = '0' + cast ( @mesR as varchar(2) ) end
else
begin select @smesR = cast ( @mesR as varchar(2) ) end

select @sFecNat = cast(@anoR as varchar(4)) + '-' + @smesR + '-' + @sdiaR
PRINT @sFecNat --Se imprime en pantalla correctamente, en el formato que
deseo >>2005-01-31

El problema es que cuando usar esta fecha resultante para hacer una consulta
no me devuelve ningun resultado (solo ceros) cuando éstos deberían ser
diferentes.

Espero me puedan ayudar.
Muchísimas gracias!

Napoleón Cabrera

Preguntas similare

Leer las respuestas

#6 Napoleón Cabrera
18/06/2005 - 20:12 | Informe spam
Es que no necesariamente es asi el select, era por darte un ejemplo
solamente.
Para ser mas especificos digamos que determino DOS fechas que definen un
intervalo; a ambas las determino de la misma manera (a veces coinciden y
otras veces son diferentes) por lo tanto más concretamente mi SELECT sería
en realidad algo asi...

SELECT ventas FROM una_tabla WHERE fecha BETWEEN @sFecNat AND @sFecNat2

pasa que no creí que fuera importante el SELECT en sí, sino más bien el
formato final de la cadena que uso como referencia para obtener los
resultados.

Gracias Maxi!

"Maxi" escribió en el mensaje
news:%
aja, es que ahi tienes el problema, prueba haciendo asi ese select:


SELECT ventas FROM una_tabla WHERE fecha >= @sFecNat and fecha < @sFecNAT
+ 1




Maxi - Buenos Aires - Argentina
Desarrollador 3 Estrellas

Msn_messager:
mail: Maxi.da[arroba]gmail.com

"Napoleón Cabrera" <berncab*sin esto*@*ni esto*hotmail.com*ni esto*>
escribió en el mensaje news:
Un SELECT que vendría después de la lista que expuse (supuse que se
entenderia)...
o sea algo asi como ...

SELECT ventas FROM una_tabla WHERE fecha = @sFecNat
Esto me debería devolver valores como
ventas

1500.20
1344.44
4800.24

pero me está arrojando...
ventas

0.00
0.00
0.00

Perdón si no fui claro. Gracias otra vez!

"Maxi" escribió en el mensaje
news:%
Cual select?


Maxi - Buenos Aires - Argentina
Desarrollador 3 Estrellas

Msn_messager:
mail: Maxi.da[arroba]gmail.com

"Napoleón Cabrera" <berncab*sin esto*@*ni esto*hotmail.com*ni esto*>
escribió en el mensaje news:
Maxi:

Que el SELECT parece que ignora la cadena de fecha final que genero.

Saludos!
Napoleón Cabrera

"Maxi" escribió en el mensaje
news:
No te he comprendido el problema :(


Maxi - Buenos Aires - Argentina
Desarrollador 3 Estrellas

Msn_messager:
mail: Maxi.da[arroba]gmail.com

"Napoleón Cabrera" <berncab*sin esto*@*ni esto*hotmail.com*ni esto*>
escribió en el mensaje news:
Hola gente... en un SP tengo algo como esto...

@diaR integer, @mesR integer, @anoR integer,
@sdiaR varchar(2), @sMesR varchar(2),
@sFecNat varchar(10)

obtengo...
select @diaR = 31
select @mesR = 1
select @anoR = 2005

(no es lo mejor para llevar al formato desado, lo se, pero no se
hacerlo de otra forma)
if len( @diaR ) <2
begin select @sdiaR = '0' + cast ( @diaR as varchar(2) ) end
else
begin select @sdiaR = cast ( @diaR as varchar(2) ) end

if len( @mesR ) <2
begin select @smesR = '0' + cast ( @mesR as varchar(2) ) end
else
begin select @smesR = cast ( @mesR as varchar(2) ) end

select @sFecNat = cast(@anoR as varchar(4)) + '-' + @smesR + '-' +
@sdiaR
PRINT @sFecNat --Se imprime en pantalla correctamente, en el
formato que deseo >>2005-01-31

El problema es que cuando usar esta fecha resultante para hacer una
consulta no me devuelve ningun resultado (solo ceros) cuando éstos
deberían ser diferentes.

Espero me puedan ayudar.
Muchísimas gracias!

Napoleón Cabrera






















Respuesta Responder a este mensaje
#7 Maxi
18/06/2005 - 20:33 | Informe spam
Hola, es que ahi tienes el problema, por mas que sean dos fechas, vos no
estas considerando que el dato fecha se gua4rda con las horas tambien,
entonces cuando haces esto:

= '20050101' solo estas trayendo los de la hora 00:00:00, el patron que te
mande era que le sumes un dia al limite superior la condicion sea menor,
asi incorporara todas las horas de una fecha, para mas informacion leete
este articulo que escribi hace un tiempo

http://www.microsoft.com/spanish/ms...art157.asp


Maxi - Buenos Aires - Argentina
Desarrollador 3 Estrellas

Msn_messager:
mail: Maxi.da[arroba]gmail.com

"Napoleón Cabrera" <berncab*sin esto*@*ni esto*hotmail.com*ni esto*>
escribió en el mensaje news:
Es que no necesariamente es asi el select, era por darte un ejemplo
solamente.
Para ser mas especificos digamos que determino DOS fechas que definen un
intervalo; a ambas las determino de la misma manera (a veces coinciden y
otras veces son diferentes) por lo tanto más concretamente mi SELECT sería
en realidad algo asi...

SELECT ventas FROM una_tabla WHERE fecha BETWEEN @sFecNat AND @sFecNat2

pasa que no creí que fuera importante el SELECT en sí, sino más bien el
formato final de la cadena que uso como referencia para obtener los
resultados.

Gracias Maxi!

"Maxi" escribió en el mensaje
news:%
aja, es que ahi tienes el problema, prueba haciendo asi ese select:


SELECT ventas FROM una_tabla WHERE fecha >= @sFecNat and fecha < @sFecNAT
+ 1




Maxi - Buenos Aires - Argentina
Desarrollador 3 Estrellas

Msn_messager:
mail: Maxi.da[arroba]gmail.com

"Napoleón Cabrera" <berncab*sin esto*@*ni esto*hotmail.com*ni esto*>
escribió en el mensaje news:
Un SELECT que vendría después de la lista que expuse (supuse que se
entenderia)...
o sea algo asi como ...

SELECT ventas FROM una_tabla WHERE fecha = @sFecNat
Esto me debería devolver valores como
ventas

1500.20
1344.44
4800.24

pero me está arrojando...
ventas

0.00
0.00
0.00

Perdón si no fui claro. Gracias otra vez!

"Maxi" escribió en el mensaje
news:%
Cual select?


Maxi - Buenos Aires - Argentina
Desarrollador 3 Estrellas

Msn_messager:
mail: Maxi.da[arroba]gmail.com

"Napoleón Cabrera" <berncab*sin esto*@*ni esto*hotmail.com*ni esto*>
escribió en el mensaje news:
Maxi:

Que el SELECT parece que ignora la cadena de fecha final que genero.

Saludos!
Napoleón Cabrera

"Maxi" escribió en el mensaje
news:
No te he comprendido el problema :(


Maxi - Buenos Aires - Argentina
Desarrollador 3 Estrellas

Msn_messager:
mail: Maxi.da[arroba]gmail.com

"Napoleón Cabrera" <berncab*sin esto*@*ni esto*hotmail.com*ni esto*>
escribió en el mensaje news:
Hola gente... en un SP tengo algo como esto...

@diaR integer, @mesR integer, @anoR integer,
@sdiaR varchar(2), @sMesR varchar(2),
@sFecNat varchar(10)

obtengo...
select @diaR = 31
select @mesR = 1
select @anoR = 2005

varchar... (no es lo mejor para llevar al formato desado, lo se,
pero no se hacerlo de otra forma)
if len( @diaR ) <2
begin select @sdiaR = '0' + cast ( @diaR as varchar(2) ) end
else
begin select @sdiaR = cast ( @diaR as varchar(2) ) end

if len( @mesR ) <2
begin select @smesR = '0' + cast ( @mesR as varchar(2) ) end
else
begin select @smesR = cast ( @mesR as varchar(2) ) end

select @sFecNat = cast(@anoR as varchar(4)) + '-' + @smesR + '-' +
@sdiaR
PRINT @sFecNat --Se imprime en pantalla correctamente, en el
formato que deseo >>2005-01-31

El problema es que cuando usar esta fecha resultante para hacer una
consulta no me devuelve ningun resultado (solo ceros) cuando éstos
deberían ser diferentes.

Espero me puedan ayudar.
Muchísimas gracias!

Napoleón Cabrera


























Respuesta Responder a este mensaje
#8 Napoleón Cabrera
18/06/2005 - 20:46 | Informe spam
De acuerdo, cualquier cosa te aviso.
Muchísimas gracias por tu tiempo Maxi!

"Maxi" escribió en el mensaje
news:
Hola, es que ahi tienes el problema, por mas que sean dos fechas, vos no
estas considerando que el dato fecha se gua4rda con las horas tambien,
entonces cuando haces esto:

= '20050101' solo estas trayendo los de la hora 00:00:00, el patron que te
mande era que le sumes un dia al limite superior la condicion sea menor,
asi incorporara todas las horas de una fecha, para mas informacion leete
este articulo que escribi hace un tiempo

http://www.microsoft.com/spanish/ms...art157.asp


Maxi - Buenos Aires - Argentina
Desarrollador 3 Estrellas

Msn_messager:
mail: Maxi.da[arroba]gmail.com

"Napoleón Cabrera" <berncab*sin esto*@*ni esto*hotmail.com*ni esto*>
escribió en el mensaje news:
Es que no necesariamente es asi el select, era por darte un ejemplo
solamente.
Para ser mas especificos digamos que determino DOS fechas que definen un
intervalo; a ambas las determino de la misma manera (a veces coinciden y
otras veces son diferentes) por lo tanto más concretamente mi SELECT
sería en realidad algo asi...

SELECT ventas FROM una_tabla WHERE fecha BETWEEN @sFecNat AND @sFecNat2

pasa que no creí que fuera importante el SELECT en sí, sino más bien el
formato final de la cadena que uso como referencia para obtener los
resultados.

Gracias Maxi!

"Maxi" escribió en el mensaje
news:%
aja, es que ahi tienes el problema, prueba haciendo asi ese select:


SELECT ventas FROM una_tabla WHERE fecha >= @sFecNat and fecha <
@sFecNAT + 1




Maxi - Buenos Aires - Argentina
Desarrollador 3 Estrellas

Msn_messager:
mail: Maxi.da[arroba]gmail.com

"Napoleón Cabrera" <berncab*sin esto*@*ni esto*hotmail.com*ni esto*>
escribió en el mensaje news:
Un SELECT que vendría después de la lista que expuse (supuse que se
entenderia)...
o sea algo asi como ...

SELECT ventas FROM una_tabla WHERE fecha = @sFecNat
Esto me debería devolver valores como
ventas

1500.20
1344.44
4800.24

pero me está arrojando...
ventas

0.00
0.00
0.00

Perdón si no fui claro. Gracias otra vez!

"Maxi" escribió en el mensaje
news:%
Cual select?


Maxi - Buenos Aires - Argentina
Desarrollador 3 Estrellas

Msn_messager:
mail: Maxi.da[arroba]gmail.com

"Napoleón Cabrera" <berncab*sin esto*@*ni esto*hotmail.com*ni esto*>
escribió en el mensaje news:
Maxi:

Que el SELECT parece que ignora la cadena de fecha final que genero.

Saludos!
Napoleón Cabrera

"Maxi" escribió en el mensaje
news:
No te he comprendido el problema :(


Maxi - Buenos Aires - Argentina
Desarrollador 3 Estrellas

Msn_messager:
mail: Maxi.da[arroba]gmail.com

"Napoleón Cabrera" <berncab*sin esto*@*ni esto*hotmail.com*ni esto*>
escribió en el mensaje news:
Hola gente... en un SP tengo algo como esto...

@diaR integer, @mesR integer, @anoR integer,
@sdiaR varchar(2), @sMesR varchar(2),
@sFecNat varchar(10)

obtengo...
select @diaR = 31
select @mesR = 1
select @anoR = 2005

varchar... (no es lo mejor para llevar al formato desado, lo se,
pero no se hacerlo de otra forma)
if len( @diaR ) <2
begin select @sdiaR = '0' + cast ( @diaR as varchar(2) ) end
else
begin select @sdiaR = cast ( @diaR as varchar(2) ) end

if len( @mesR ) <2
begin select @smesR = '0' + cast ( @mesR as varchar(2) ) end
else
begin select @smesR = cast ( @mesR as varchar(2) ) end

select @sFecNat = cast(@anoR as varchar(4)) + '-' + @smesR + '-' +
@sdiaR
PRINT @sFecNat --Se imprime en pantalla correctamente, en el
formato que deseo >>2005-01-31

El problema es que cuando usar esta fecha resultante para hacer una
consulta no me devuelve ningun resultado (solo ceros) cuando éstos
deberían ser diferentes.

Espero me puedan ayudar.
Muchísimas gracias!

Napoleón Cabrera






























email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida