Esto esta raro haber si me ayudan

06/09/2008 - 20:32 por Luis Mata | 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
 

Leer las respuestas

#1 Alejandro Mesa
07/09/2008 - 01:16 | Informe spam
Luis Mata,

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



Las variables @diaactual y @numdias, son tipo int, y la division de enteros
retorna otro entero (no decimales). Si el resultado de la division es un #
que debe estar entre 0 y 1, este sera valor sera truncado.

Ejemplo:

select 2 / 5
go

Si no deseas esto, entonces debes promover las variables enteras a otro tipo
de data que permita decimales, esto lo puedes hacer mediante el uso de las
funciones cast o convert, o tambien puedes agregar una constante tipo numeri
/ decimal en la expresion para que SQL Server automaticamente promueva los
tipos enteros.

Ejemplo

select
cast(2 as numeric(5, 3)) / cast(5 as numeric(5, 3)),
(2 * 1.000) / 5,
2 / 5.000,
2 / 5.
GO


AMB


"Luis Mata" wrote:

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 similares