You are here: Re: time conversion hiccup « MsSQL Server « IT news, forums, messages
Re: time conversion hiccup

Posted by Pall Bjornsson on 09/18/07 14:43

Hi !

What I can see via quick read are two errors or mistakes.

1) Definition of a variable or result of type decimal(1), can store at the
most one total number of digits both to the left and to the right of the
decimal point, so you'll never get a result with anything more than a single
digit number, even if the result should be 10 or more, in which case you
should get an overflow error.

2) The division by the integer number 60 forces the operation to be an
integer division, as you can easily see by executing this statement:
select datediff(n,'08:00','14:25')/60,

convert(decimal(1),datediff(n,'08:00','14:25')/60),

datediff(n,'08:00','14:25')/60.0,

convert(decimal(1),datediff(n,'08:00','14:25')/60.0)

Hope this helps,

Palli

<DonLi2006@gmail.com> wrote in message
news:1190084992.933315.305940@g4g2000hsf.googlegroups.com...
> Hi,
>
> ddl & dml
> project varchar(10) start char(5) stop char(5)
> ------------------------- ----- -----
> hey now 21:00 19:25
> new test 20:25 20:30
> t 10 21:00 NULL
> t 11 21:10 21:35
> t 12 21:30 22:40
> t 12 7:05 11:10
> test me 08:00 14:25
> test me 17:00 17:55
>
> what I want is to calculate time duration using hour (h.1decimal) e.g.
> 1.2 :
> what I have now using the following query:
> select project, start, stop,
> CASE WHEN (datediff(n,start,stop) < 0) THEN -1
> WHEN (datediff(n,start,stop) < 1) THEN (CAST(datediff(n,start,stop)
> as decimal(1)))
> ELSE Convert(decimal(1),(datediff(n,start,stop)/60)) END as
> total_hours
> from testTBl
> group by project, start, stop
>
> output:
> project start stop total_hours
> ------------------------- ----- ----- -----------
> hey now 21:00 19:25 -1
> new test 20:25 20:30 0
> t 10 21:00 NULL NULL
> t 11 21:10 21:35 0
> t 12 21:30 22:40 1
> t 12 7:05 11:10 4
> test me 08:00 14:25 6
> test me 17:00 17:55 0
>
> If the calcuate is right I'd like to remove start and stop columns,
> so, it would just return project and the sum of hours including less
> than an hour in decimal for each.
>
> Thank you.
>

 

Navigation:

[Reply to this message]


Удаленная работа для программистов  •  Как заработать на Google AdSense  •  England, UK  •  статьи на английском  •  PHP MySQL CMS Apache Oscommerce  •  Online Business Knowledge Base  •  DVD MP3 AVI MP4 players codecs conversion help
Home  •  Search  •  Site Map  •  Set as Homepage  •  Add to Favourites

Copyright © 2005-2006 Powered by Custom PHP Programming

Сайт изготовлен в Студии Валентина Петручека
изготовление и поддержка веб-сайтов, разработка программного обеспечения, поисковая оптимизация