Jump to content

SQL Server 2005 - Inserir tempos


skcratch
 Share

Recommended Posts

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)

Link to comment
Share on other 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.

SELECT * FROM users WHERE clue > 0;0 rows returned.

Link to comment
Share on other 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 😛 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)

SELECT * FROM users WHERE clue > 0;0 rows returned.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.