Usuário com melhor resposta
Converter datetime em float

Pergunta
-
Boa tarde!
Preciso de uma ajuda para para converter uma coluna que esta em Common.TDatetime para FLOAT e armazenar em uma variável
declare @temp FLOAT
select @temp = CONVERT(FLOAT,EndDateTime)
from tabela1 where id=1Mas o código acima esta retornando o seguinte erro: Explicit conversion from data type datetimeoffset to float is not allowed.
Alguém teria uma ideia?
Obrigado.
Respostas
-
Muito pouco provável que você precise converter um campo data apenas para adicionar um número, nessa espécie de timeout. A data/hora já fica armazenada como um número, então não teria muita lógica convertê-la explicitamente para float para somar a algum número. Normalmente utiliza-se a função dateadd para isso, salvo algum particularidade, que ate agora não me pareceu ser o caso.
Se isso não resolver sua questão, por favor, forneça maiores detalhes sobre a mesma.
Exemplos:
Declare @Data DateTime = '2012-10-29 18:41:34' Select Data = @Data, DataMaisDezSegundos = DateAdd(SECOND, 10, @Data), DataMaisDezMinutos = DateAdd(MINUTE, 10, @Data), DataMaisDezHoras = DateAdd(HOUR, 10, @Data), DataMaisDezDias = DateAdd(DAY, 10, @Data), DataMaisDezMeses = DateAdd(MONTH, 10, @Data), DataMaisDezAnos = DateAdd(YEAR, 10, @Data)
Roberson Ferreira - Database Developer
Acesse: www.robersonferreira.com.br
Email: contato@robersonferreira.com.brSe esta sugestão for útil, por favor, classifique-a como útil.
Se ela lhe ajudar a resolver o problema, por favor, marque-a como Resposta.- Marcado como Resposta JPJUNIOR terça-feira, 30 de outubro de 2012 12:07
Todas as Respostas
-
só para entender, por que converter um formato de data para float ? voce quer converter uma data em numero ? pode passar um exemplo de uma data e como voce quer que fique ?
Alexandre Matayosi Conde Mauricio. Se esta sugestão for útil, por favor, classifique-a como útil. Se ela lhe ajudar a resolver o problema, por favor, marque-a como Resposta.
-
Boa tarde,
Eu também não sei qual é a finalidade, nem sem você vai obter o resultado desejado, mas experimente fazer a conversão para DateTime antes de converter para Float.
Espero que seja útil.
Assinatura: http://www.imoveisemexposicao.com.br
-
É uma situação para controle de produto em produção. Converto essa data em float e somo com outro valor (como se fosse um timeout) que também esta em float. Então comparo esse resultado com outra data para decidir o que o sistema deve fazer...
-
Veja se é mais ou menos isto que voce quer, voce não consegue converter de primeira para float por que na data teria - ou /:
create table #temp (coluna date) insert into #temp values (GETDATE()),(GETDATE() - 1),(GETDATE() +1) select CAST(cast(replace(coluna,'-','') as varchar(20)) as float) from #temp
Alexandre Matayosi Conde Mauricio. Se esta sugestão for útil, por favor, classifique-a como útil. Se ela lhe ajudar a resolver o problema, por favor, marque-a como Resposta.
-
Eu tenho um coluna com as seguintes características:
Nome: DataInicio; Data Type: TDatetime; Lenght: 10
Quando faço o seguinte comando obtenho a seguinte resposta:
select DataInicio from tabela1 where id=1
2012-10-29 18:41:34.6589383 -02:00
Eu gostaria de converter essa data em float para inserir em uma variável float. Alexandre, valeu pela dica, mas infelizmente não funcionou. Retornou o seguinte erro: Error converting data type varchar to float
-
Não sei se é a melhor maneira, mas tente assim:
Declare @variavel float set @variavel = (select CAST(cast(replace(replace(replace('2012-10-29 18:41:34.6589383 -02:00','-',''),':',''),' ','') as varchar(20)) as float)) select @variavel
Alexandre Matayosi Conde Mauricio. Se esta sugestão for útil, por favor, classifique-a como útil. Se ela lhe ajudar a resolver o problema, por favor, marque-a como Resposta.
-
Experimente mais ou menos desta forma:
select cast(Cast(DataInicio as DateTime) as Float)
ou
select cast(cast(SWITCHOFFSET(DataInicio, '+00:00') as DateTime) as Float)
Espero que seja útil.
Assinatura: http://www.imoveisemexposicao.com.br
-
Muito pouco provável que você precise converter um campo data apenas para adicionar um número, nessa espécie de timeout. A data/hora já fica armazenada como um número, então não teria muita lógica convertê-la explicitamente para float para somar a algum número. Normalmente utiliza-se a função dateadd para isso, salvo algum particularidade, que ate agora não me pareceu ser o caso.
Se isso não resolver sua questão, por favor, forneça maiores detalhes sobre a mesma.
Exemplos:
Declare @Data DateTime = '2012-10-29 18:41:34' Select Data = @Data, DataMaisDezSegundos = DateAdd(SECOND, 10, @Data), DataMaisDezMinutos = DateAdd(MINUTE, 10, @Data), DataMaisDezHoras = DateAdd(HOUR, 10, @Data), DataMaisDezDias = DateAdd(DAY, 10, @Data), DataMaisDezMeses = DateAdd(MONTH, 10, @Data), DataMaisDezAnos = DateAdd(YEAR, 10, @Data)
Roberson Ferreira - Database Developer
Acesse: www.robersonferreira.com.br
Email: contato@robersonferreira.com.brSe esta sugestão for útil, por favor, classifique-a como útil.
Se ela lhe ajudar a resolver o problema, por favor, marque-a como Resposta.- Marcado como Resposta JPJUNIOR terça-feira, 30 de outubro de 2012 12:07
-
Pessoal, obrigado pela ajuda.
Só para explicar melhor, tenho uma coluna datetime para marcar a date e hora de inicio. E uma coluna float com contem os segundos de timeout.Precisava somar o timeout (que estava em float) com a data de inicio para saber o tempo máximo que o produto tinha para entrar na linha.
E depois que ele entrasse, eu verificava se o tempo real de entrada foi superior ao teórico (resultado da soma anterior).
E caso fosse inferior, eu tinha que atualizar a coluna timeout com os segundos reais que ele demorou para entrar.
O primeiro select do gapimex funcionou.
Porém eu desconhecia as funções apresentadas pelo Roberson, que tornou o trabalho mais facil. Fiz a soma com o "DateAdd" e depois calculei a diferença com a função datediff ( datediff(second, @NextDataInicio, @LastDataInicio )Agora vou continuar com resto do trabalho.
Mais uma vez, muito obrigado pela ajuda de todos.