Pergunta

INSERT INTO timecrunch.dbo.intervals (IntervalID, Duration) 
SELECT ixInterval, DATEDIFF(hour, dtStart, dtEnd) FROM fogbugz.dbo.TimeInterval
WHERE dtEnd is not NULL

intervalID é um int, a duração é um float

Eu estou tentando colocar todas as durações de hora em hora para a coluna Duração ... Eu supor que mesmo que seja menos de uma hora ele vai usar uma fração que é por isso que eu coloquei um flutuador?

Ajuda.

PS: Está funcionando muito bem sem erros, mas depois de pronto tabela de intervalos ainda está vazio ... Eu sei que os dados estão na tabela TimeInterval embora ...

Foi útil?

Solução

Eu não tenho certeza por isso que os seus dados são não aparecendo, mas DATEDIFF não vai retornar um float. Para obter um float, você provavelmente vai querer usar uma unidade menor de tempo e dividir pelo número de suas unidades por minuto. Exemplo:

DATEDIFF(second, dtStart, dtEnd) / (3600.0)

Outras dicas

DATEDIFF retorna um Int do número de limites data parte cruzados. Eu esperaria que você obtenha o andar do número de horas de duração, a menos que haja um problema com a conversão implícita de int para flutuar.

Também é útil para postar a mensagem de erro recebida.

Para inserir fracções reais de uma hora, a utilização:

INSERT INTO timecrunch.dbo.intervals (IntervalID, Duration) 
SELECT 
  ixInterval, 
  DATEDIFF(mi, dtStart, dtEnd) / 60.0
FROM 
  fogbugz.dbo.TimeInterval
WHERE 
  dtEnd is not NULL

DATEDIFF sempre retorna um valor INT, nunca uma fração.

Tente executar o SELECT por conta própria com o bit INSERT, para verificar se a sua consulta está realmente voltando alguns dados.

Edit:. Como já foi dito, DATEDIFF retorna um inteiro, não uma bóia, mas isso não deve impedir o INSERT a partir da inserção de alguns dados

Primeiro que resultados você começa apenas com a execução do seleto?

No SQL Server DateDiff retorna um int ( Veja MSDN )

DATEDIFF irá retornar um int não um float -? É que o problema que você está enfrentando

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top