Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Lucas Alves87

Substração de 2campos Datetime

Recommended Posts

Boa tarde a todos, como este é o meu primeiro tópico caso haja alguma coisa que eu tenha feito errado por favor me avisem para que eu arrume ok ^^

 

La vai ...

 

Eu tenho uma tabela com o nome PRODUTIVIDADE_PRODUCAO, eu tenho 2 campos datetime nesta tabela que são:

 

HORA_INI_PRODUTIVIDADE_PRODUCAO ex(2008-08-22 14:42:16.083)

HORA_FIM_PRODUTIVIDADE_PRODUCAO ex(2008-08-22 10:07:40.680)

 

eu preciso fazer um campo menos o outro desconciderando os milesimos de segundo...

 

 

Será que alguem poderia me ajudar, eu ja tentei de todo jeito mas não consegui... abaixo segue minhas ultima tentativa:

 

SELECT DISTINCT COD_CEN_CADCEN, DESCR_CEN_CADCEN, DESCR_TABCAR, HORA_FIM_PRODUTIVIDADE_PRODUCAO,

 

HORA_INI_PRODUTIVIDADE_PRODUCAO, (SELECT TOP 1 ((convert(varchar(23),(DATEDIFF(YEAR, HORA_INI_PRODUTIVIDADE_PRODUCAO, HORA_FIM_PRODUTIVIDADE_PRODUCAO)))) + '-' +

 

(convert(varchar(23),(DATEDIFF(MONTH, HORA_INI_PRODUTIVIDADE_PRODUCAO, HORA_FIM_PRODUTIVIDADE_PRODUCAO)))) + '-' +

 

(convert(varchar(23),(DATEDIFF(DAY, HORA_INI_PRODUTIVIDADE_PRODUCAO, HORA_FIM_PRODUTIVIDADE_PRODUCAO)))) + ' ' +

 

(convert(varchar(23),(DATEDIFF(HOUR, HORA_INI_PRODUTIVIDADE_PRODUCAO, HORA_FIM_PRODUTIVIDADE_PRODUCAO)))) + ':' +

 

(convert(varchar(23),(DATEDIFF(MINUTE, HORA_INI_PRODUTIVIDADE_PRODUCAO, HORA_FIM_PRODUTIVIDADE_PRODUCAO)))) + ':' +

 

(convert(varchar(23),(DATEDIFF(SECOND, HORA_INI_PRODUTIVIDADE_PRODUCAO, HORA_FIM_PRODUTIVIDADE_PRODUCAO)))))) DIFERENCA_TOTAL, NUM_PESS_PRODUTIVIDADE_PRODUCAO, QUANTIDADE_PRODUZIDA

 

FROM CADCEN, TABCAR, PRODUTIVIDADE_PRODUCAO

WHERE DATA_PRODUTIVIDADE_PRODUCAO >= 20080815 AND DATA_PRODUTIVIDADE_PRODUCAO <= 20080821

AND COD_CEN_CADCEN >= 60002

AND COD_CEN_CADCEN <= 60003

AND SERVICO_PRODUTIVIDADE_PRODUCAO = COD_TABCAR

AND LOCAL_PRODUTIVIDADE_PRODUCAO = COD_CEN_CADCEN

 

 

só que ele retorna uns valores estranhos para minuto e segundo

exemplo:

 

HORA FINAL HORA INICIAL

2008-10-30 12:15:00.000 2008-10-30 10:33:23.950

 

UM MENOS O OUTRO

0-0-0 2:102:6097

 

FICAREI GRATO SE ALGUEM CONSEGUIR ME AJUDAR

 

ATENCIOSAMENTE

LUCAS ALVES

Compartilhar este post


Link para o post
Compartilhar em outros sites

por favor passe mais dados, tipo e qual seria o resultado esperado para:

 

1) 2008-10-30 12:15:00.000 - 2008-10-30 10:33:23.950 = ?

2) 2008-10-28 12:15:00.000 - 2008-10-30 10:33:23.950 = ?

3) 2008-08-28 12:15:00.000 - 2008-10-30 10:33:23.950 = ?

 

a idéia é com o resultado esperado montarmos a fórmula

Compartilhar este post


Link para o post
Compartilhar em outros sites

por favor passe mais dados, tipo e qual seria o resultado esperado para:

 

1) 2008-10-30 12:15:00.000 - 2008-10-30 10:33:23.950 = ?

2) 2008-10-28 12:15:00.000 - 2008-10-30 10:33:23.950 = ?

3) 2008-08-28 12:15:00.000 - 2008-10-30 10:33:23.950 = ?

 

a idéia é com o resultado esperado montarmos a fórmula

hh:mm:ss

OK!, a idéia a seguinte, eliminar o milésimos, ficando apenas 10:33:23

 

ai fazer a data Final 2009-01-19 16:00:53

-

menos a data inicial 2009-01-19 16:00:27

--------------------------

Diferença total: 0 / 0 / 0 0:00:26

 

ou seja, a diferença entre a hora final menos a inical eh de 26 segundos....deu pra entendergalera ??

qualquer coisa eu faço outro exemplo

Compartilhar este post


Link para o post
Compartilhar em outros sites

só coloquei os exemplos acima para entender qual seria o resultado em caso de mês diferente ou dia diferente.

 

mas baseado no seu último post o caminho das pedras seria este:

declare @dtIni datetime,
	@dtFim datetime

set @dtIni = '2008-10-30 16:00:53' 
set @dtFim = '2008-10-30 16:00:27'

select @dtIni - @dtFim as Result1, convert(varchar(8),@dtIni - @dtFim,108) as Result2

retorna:

Result1												Result2  
------------------------------------------------------ -------- 
1900-01-01 00:00:26.000								00:00:26

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara beleza, estamos quase lá, ele conseguiu subtrair os segundos os minutos e as horas certinho

 

select DISTINCT HORA_FIM_PRODUTIVIDADE_PRODUCAO,HORA_INI_PRODUTIVIDADE_PRODUCAO,

convert(varchar(8),HORA_FIM_PRODUTIVIDADE_PRODUCAO - HORA_INI_PRODUTIVIDADE_PRODUCAO,108) as Result2

FROM PRODUTIVIDADE_PRODUCAO

 

2008-11-26 06:47:46.920 2008-11-25 22:15:47.620 08:31:59

 

Só que eu gostaria também que ele subtraisse os dias o mes e o ano , no caso o exemplo abaixo ficaria com

0-0-2 e as horas minutos e segundos restantes,será que tem como fazer ?

 

2008-12-29 01:11:30.730 2008-12-27 14:43:55.620 10:27:35

 

Brigado desde ja em, ja me ajudou muito

Compartilhar este post


Link para o post
Compartilhar em outros sites

Use o comando datediff para isso. Copie e rode o sql abaixo e vai ver como funciona:

 

SELECT DATEDIFF(day, GETDATE(), GETDATE()+3) AS Dias

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.