algo raro con sql 2008

06/09/2008 - 20:34 por Luis Mata\(N\) | Informe spam
Estoy usando sql 2008

ejecuto el siguiente script

declare @fechagen datetime,@metames decimal(12,2)
set @metames = 274568.90
set @fechagen = getdate()
declare @dinicial datetime, @numdias int, @diaactual int
set @numdias = DAY(DATEADD(DAY, -1, CONVERT(VARCHAR(6), DATEADD(MONTH, 1,
@fechagen), 112) + '01'))
set @diaactual = day(@fechagen)
declare @metaahora decimal(12,2), @diasreal int --decimal(12,2)
set @diasreal = (@diaactual/@numdias)*(@numdias-4)
print @diaactual --valor 6 dias de mes
print @numdias --valor 30 numero de dia actual
print (@diaactual/@numdias)
print @diasreal

pero el resultado me sale 0 a pesar que la division de hace con valores
superiores a 0, habersi me dan una mano solo copien y peguen el script y
ejecutenlo haber como les sale.

lo ejecuto sobre w vista bussines

Luis

Preguntas similare

Leer las respuestas

#1 Luis Mata\(N\)
06/09/2008 - 20:48 | Informe spam
lo solucione de la siguiente menera:

declare @fechagen datetime,@metames decimal(12,2)
set @metames = 274568.90
set @fechagen = getdate()
declare @dinicial datetime, @numdias int, @diaactual int
set @numdias = DAY(DATEADD(DAY, -1, CONVERT(VARCHAR(6), DATEADD(MONTH, 1,
@fechagen), 112) + '01'))
set @diaactual = day(@fechagen)
declare @metaahora decimal(12,2), @diasreal decimal(12,4)
set @diasreal = (cast(@diaactual as decimal(12,4))/cast(@numdias as
decimal(12,4)))*(cast(@numdias as decimal(12,4))-4)
print @diaactual --valor 6 dias de mes
print @numdias --valor 30 numero de dia actual
print (@diaactual/@numdias)
print @diasreal

mi pregunta

¿no se puede dividir variables int y almacenarlas en una variable
decimal(12,4) o int?
lo de int se entiende que se pueden perder datos pero en el decimal...ummmm

Luis


"Luis Mata(N)" escribió en el mensaje de
noticias news:%
Estoy usando sql 2008

ejecuto el siguiente script

declare @fechagen datetime,@metames decimal(12,2)
set @metames = 274568.90
set @fechagen = getdate()
declare @dinicial datetime, @numdias int, @diaactual int
set @numdias = DAY(DATEADD(DAY, -1, CONVERT(VARCHAR(6), DATEADD(MONTH, 1,
@fechagen), 112) + '01'))
set @diaactual = day(@fechagen)
declare @metaahora decimal(12,2), @diasreal int --decimal(12,2)
set @diasreal = (@diaactual/@numdias)*(@numdias-4)
print @diaactual --valor 6 dias de mes
print @numdias --valor 30 numero de dia actual
print (@diaactual/@numdias)
print @diasreal

pero el resultado me sale 0 a pesar que la division de hace con valores
superiores a 0, habersi me dan una mano solo copien y peguen el script y
ejecutenlo haber como les sale.

lo ejecuto sobre w vista bussines

Luis
Respuesta Responder a este mensaje
#2 Carlos M. Calvelo
06/09/2008 - 22:30 | Informe spam
Hola Luis,

On 6 sep, 20:48, "Luis Mata\(N\)"
wrote:
lo solucione de la siguiente menera:

declare @fechagen datetime,@metames decimal(12,2)
set @metames = 274568.90
set @fechagen = getdate()
declare @dinicial datetime, @numdias int, @diaactual int
set @numdias = DAY(DATEADD(DAY, -1, CONVERT(VARCHAR(6), DATEADD(MONTH, 1,
@fechagen), 112) + '01'))
set @diaactual = day(@fechagen)
declare @metaahora decimal(12,2), @diasreal decimal(12,4)
set @diasreal = (cast(@diaactual as decimal(12,4))/cast(@numdias as
decimal(12,4)))*(cast(@numdias as decimal(12,4))-4)
print @diaactual --valor 6 dias de mes
print @numdias --valor 30 numero de dia actual
print (@diaactual/@numdias)
print @diasreal

mi pregunta

¿no se puede dividir variables int y almacenarlas en una variable
decimal(12,4) o int?
lo de int se entiende que se pueden perder datos pero en el decimal...ummmm





El resultado de una división de ints es un int.
Si después se asigna ese resultado a un decimal solo
se está convirtiendo un int a decimal.

Por ejemplo 1/2 es 0 y si asignas el resultado de
esa division a una variable decimal pues seguirá
siendo 0. Por el contrario 1.0/2.0, 1/2.0 y 1.0/2
resultan en 0.5

Si hubieras declarado @numdias y/o @diaactual como
decimal entonces el resultado de la division habría sido
también decimal.

Saludos,
Carlos
Respuesta Responder a este mensaje
#3 Luis Mata\(N\)
06/09/2008 - 23:05 | Informe spam
asi es amigo Carlos ya me di cuenta gracia por el hincapie

Luis

"Carlos M. Calvelo" escribió en el mensaje de
noticias
news:
Hola Luis,

On 6 sep, 20:48, "Luis Mata\(N\)"
wrote:
lo solucione de la siguiente menera:

declare @fechagen datetime,@metames decimal(12,2)
set @metames = 274568.90
set @fechagen = getdate()
declare @dinicial datetime, @numdias int, @diaactual int
set @numdias = DAY(DATEADD(DAY, -1, CONVERT(VARCHAR(6), DATEADD(MONTH, 1,
@fechagen), 112) + '01'))
set @diaactual = day(@fechagen)
declare @metaahora decimal(12,2), @diasreal decimal(12,4)
set @diasreal = (cast(@diaactual as decimal(12,4))/cast(@numdias as
decimal(12,4)))*(cast(@numdias as decimal(12,4))-4)
print @diaactual --valor 6 dias de mes
print @numdias --valor 30 numero de dia actual
print (@diaactual/@numdias)
print @diasreal

mi pregunta

¿no se puede dividir variables int y almacenarlas en una variable
decimal(12,4) o int?
lo de int se entiende que se pueden perder datos pero en el
decimal...ummmm





El resultado de una división de ints es un int.
Si después se asigna ese resultado a un decimal solo
se está convirtiendo un int a decimal.

Por ejemplo 1/2 es 0 y si asignas el resultado de
esa division a una variable decimal pues seguirá
siendo 0. Por el contrario 1.0/2.0, 1/2.0 y 1.0/2
resultan en 0.5

Si hubieras declarado @numdias y/o @diaactual como
decimal entonces el resultado de la division habría sido
también decimal.

Saludos,
Carlos
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida