Substrair Datas Convertidas
Bom Dia Pessoal,
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?
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
Curtidas 0
Respostas
Fabiano Carvalho
19/12/2013
Evite usar NVARCHAR, ele ocupa o dobro de espaço.
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.
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.
GOSTEI 0
Alex Lekao
19/12/2013
Oi Boa tarde!!!
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
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
GOSTEI 0
Marcio Morando
19/12/2013
Beleza Fabiano Carvalho. Acabei tendo que fazer uns calculos para trazer hora separada também.
Mas deu certo. Muito Obrigado pela dica.
Mas deu certo. Muito Obrigado pela dica.
GOSTEI 0
Marcio Morando
19/12/2013
Pessoal, fiz estas duas consultas:
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?
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?
GOSTEI 0
Fabiano Carvalho
19/12/2013
tem que converter pra float
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)
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)
GOSTEI 0
Fabiano Carvalho
19/12/2013
Ou então, deixe em segundos (inteiros), e depois converta para dias quando for consultar.
GOSTEI 0
Alex Lekao
19/12/2013
Oi Marcio, boa tarde!!!
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.
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.
GOSTEI 0
Marcio Morando
19/12/2013
Select convert(varchar(8),getdate(),108)
onde eu coloco o campo que quero converter?
onde eu coloco o campo que quero converter?
GOSTEI 0
Alex Lekao
19/12/2013
Select convert(varchar(8),getdate(),108)
onde eu coloco o campo que quero converter?
onde eu coloco o campo que quero converter?
substitui o getdate() pelo campo, o getdate() foi so de exemplo... rsrsr
GOSTEI 0
Marcio Morando
19/12/2013
CONVERT(varchar(8),Inicio,108) as HoraInicio,
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?
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?
GOSTEI 0
Fabiano Carvalho
19/12/2013
converta o datetime para float
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.
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.
GOSTEI 0