Substrair Datas Convertidas
19/12/2013
0
Estou fazendo o seguinte comando:
CONVERT(nvarchar(10),DataExpedicao, 103) AS DataExpedicao,
CONVERT(nvarchar(10), Inicio, 103) DataInicio,
e está me trazendo as datas do formato que preciso. Agora preciso subtrair estas duas datas.
Tentei utilizar o DATEDIFF, mas não consegui acerta a sintaxe eu acho.
Como devo proceder?
Marcio Morando
Posts
19/12/2013
Fabiano Carvalho
Sem converter utilize.
select datediff(day,data_1,data_2)
Se quiser a data que daria, faça
select dateadd(day, - datediff(day,data_1,data_2),data_2)
Acho que deve funcionar.
19/12/2013
Alex Lekao
Vc quer que parte das datas?
talvez nem precise usar o datediff, vc pode usar a conversao que ja esta usando, acredito que seja possivel, nao me lembro de ter feito diferente. rsrsr
19/12/2013
Marcio Morando
Mas deu certo. Muito Obrigado pela dica.
19/12/2013
Marcio Morando
CONVERT(varchar(10), Inicio, 103) DataInicio,CONVERT(CHAR(8), Inicio, 8 ) AS HoraInicio,
CONVERT(CHAR(8), DataExpedicao, 8 ) HoraExpedicao,
que são dois campos DATETIME e eu converti para pegar somente a hora em 00:00:00.
Mas preciso converter isso para INTEGER agora, para escrever em outra tabela, mas não estou conseguindo converter com o CAST.
Alguma sugestão de como devo fazer?
19/12/2013
Fabiano Carvalho
select cast(getdate() as float)
Outra coisa, não faça "gambiarra".
Utilize o exemplo abaixo para obter somente a hora no padrao 00:00:00
Select convert(varchar(8),getdate(),108)
19/12/2013
Fabiano Carvalho
19/12/2013
Alex Lekao
nao entendi direito, vc precisa que as horas aparecem em inteiro?
acho que o datediff nao ja lhe de isso.
posso dar uma olhada aqui em alguns codigos que usei para tratamento de datas e horas e postar aqui para vc analisar e ver se te ajuda.
19/12/2013
Marcio Morando
onde eu coloco o campo que quero converter?
19/12/2013
Alex Lekao
onde eu coloco o campo que quero converter?
substitui o getdate() pelo campo, o getdate() foi so de exemplo... rsrsr
19/12/2013
Marcio Morando
CONVERT(varchar(8),DataExpedicao,108) as HoraExpedicao,
Deixei os dois campos assim.
Agora preciso converter para INTEGER.
Fabiano, tentei converter para FLOAT, mas da erro também.
sintaxe ---> CAST(CONVERT(varchar(8),Inicio,108)AS INTEGER) as HoraInicio,
Onde está o erro?
20/12/2013
Fabiano Carvalho
As horas do windows estão em float
tente esse exemplo.
select cast(getdate() as float)
A coluna que ira receber tambem precisa estar em float para não faltar casas decimais.
e para retornar o float para datetime basta converte-lo para datetime. Se quiser converter segundos para datetime, converta eles para dias.
Exemplo, 2 segundos em dias é o mesmo que 2.0 / 86400
86400 segundos tem em um dia.
Tenta ai e retorne.
Clique aqui para fazer login e interagir na Comunidade :)