• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

skcratch

SQL Server 2005 - Inserir tempos

5 mensagens neste tópico

Viva!

No meu projecto de BD, tenho que implementar uma aplicação que permita realizar a gestão de corridas pedestres. Um dos atributos que terá que ser inserido, é o tempo que cada atleta demora a concluir a prova. Como no SQL Server os tipos DATETIME e SMALLDATETIME apenas permitem lidar com datas completas, qual a forma alternativa que sugerem para inserir tempos no formato hh--mm--ss e que possibilite realizar operações (lógicas) sobre esse mesmo tipo?

Grato desde já pela ajuda!

Cumps!

B)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

E sao exactamente esses os tipos que tens de usar. Acontece e' que vais ter de os 'formatar' conforme aquilo que precisas.

Da uma olhadela 'a funcao CONVERT que existe no MSSQL que e' qualquer coisa do tipo:

CONVERT ( data_type [ ( length ) ] , expression [ , style ] )

o que esta entre [ ] quer dizer que e' opcional.

Assim de repente de cabeca deve ser algo do tipo:

CONVERT(float,tempo_de_conclusao,14)

- Float representa o tipo de dados para o qual o campo original vai ser convertido.

- tempo_de_conclusao e' o campo original que e' do tipo DATETIME

- 14 faz parte de um conjunto de codigos presente na documentacao, neste caso:

14 - hh:mi:ss:mmm(24h)

http://msdn2.microsoft.com/en-us/library/aa226054(SQL.80).aspx

Resumindo e concluindo: nao existe um tipo de dados para guardar apenas a hora. Tens de usar a data toda e extrair dela so aquilo que precisas. TIMESTAMP esta completamente fora de questao porque apenas guarda a hora em que o registo foi criado ou modificado. Se cais no erro de actualizar o registo (por alguma razao), perdes o tempo original.

CAST tambem e' outra opcao mas para o que queres nao e' tao bom como o CONVERT.

Espero que isto tenha ajudado.

Abraco.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Viva!

Obrigado pela ajuda. Dei agora uma "olhadela" por alto e parece que pode resolver o meu problema.

Cumps!

B)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O tipo de dados para o que queres converter afecta depois a maneira como queres comparar os dados.

Eu pessoalmente nunca trabalhei com MSSQL e comeco a dar gracas a Deus por nunca ser preciso. Mas tambem nao digo que desta agua nao beberei porque faco o que der dinheiro.

O Oracle e o DB2 tem boas funcoes para lidar com o tempo, e o MySQL usa a vantagem do formato de tempo UNIX que e' facilmente convertido no que quiseres em termos de horas.

Eu nao duvido que ate haja algo mais simples no MSSQL do que aquilo que pus ai, mas sinceramente, desconheco. Se calhar para calcular diferencas de tempo entre X e Y vais ter de andar outra vez 'as cabecadas com o codigo,  mas ve qual e' o output que isso te da' e se consegues pelo menos extrair alguma informacao disso.

Mal a mal, ve a documentacao da Microsoft e ve se podes converter apenas para segundos :P e trabalhas com isso... e' uma questao de imaginacao.

Qualquer coisa volta aqui e vamos vendo a melhor maneira de chegar aquilo que pretendes.

-EDIT-

Acabei de encontrar isto:

http://www.sqlteam.com/forums/topic.asp?TOPIC_ID=64762

Pode ser que ajude  B)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Viva!

Mais uma vez, obrigado pela ajuda prestada e pelos esclarecimentos.

Cumps!

B)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora