---
title: "Hundradels sekunder"
type: "forum-thread"
url: "https://www.webforum.nu/amne/databaser-sql/145344-hundradels-sekunder"
topic: "Databaser & SQL"
topic_url: "https://www.webforum.nu/amne/databaser-sql"
author: "sadsmile"
published: "2006-04-10T21:48:38.000Z"
updated: "2010-09-14T12:03:07.000Z"
replies: 14
views: 1573
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/databaser-sql/145344-hundradels-sekunder"
---

# Hundradels sekunder

## #1 — sadsmile, 2006-04-10T21:48Z

Hej

Håller på med att bygga upp en databas i MySQL. I en tabell så skall jag lagra tider iform av minuter:sekunder:hundradelssekunder.

Jag undrar nu om det går att få med det där med hundradelar i MySQL. Har försökt att läsa in mig på TIME men det enda jag har sett än så länge är formatet HH:MM:SS.

Skall använda värderna till beräkningar, skulle jag inte göra det så skulle jag kunna lagrat det hela i textformat eller så.

Anders

Permalänk: https://www.webforum.nu/p/145344

## #2 — MickeA.com, 2010-09-14T05:17Z

Drar upp en gammal tråd men jag ska nu göra exakt samma sak som ovanstående i MySQL, alltså spara tider i formatet **minuter:sekunder:hundradelar**.

Ska även här användas till beräkningar i ett senare skede. 

*Vilken datatyp bör användas?*

Tack!

Permalänk: https://www.webforum.nu/p/2251917

## #3 — MickeA.com, 2010-09-14T06:53Z

Hittade den här tråden:
<http://pellesoft.se/communicate/forum/view.aspx?msgid=242841&forumid=24&sum=0>

Där föreslås att man sparar allt i hundradelar. Finns det något smart sätt att med PHP konvertera fram och tillbaka om man utgår ifrån att man i applikationen anger tiden i tre separata fält? Det står stilla i huvudet.

Permalänk: https://www.webforum.nu/p/2251920

## #4 — GunnarD, 2010-09-14T07:38Z

Antingen så sparar du det som antal hundradelar (Min\*60\*100+Sec\*100+Hundradelar) eller så kan du spara det som ett flyttal (unixtimestamp.hundradelar) nackdelen med flyttal att du kan få avrundningsfel fördelen är att det finns färdiga funktioner att hantera unixtimestamp.

Permalänk: https://www.webforum.nu/p/2251921

## #5 — MickeA.com, 2010-09-14T07:49Z

Fast med *unixtimestamp* så måste jag ju ange ett helt datum va? Det här ska användas till en applikation för anmälan till tävlingar. När man anmäler sig måste man ange sin rekordtid på de grenar man vill anmäla sig till.

I förlängningen ska det även användas för bl.a. topplistor och även en spärrfunktion för att få möjligheten att "*spärra anmälan för alla med ett sämre rekord än xx*".

På [forumet på MySQL.com](http://forums.mysql.com/read.php?10,84044,84132#msg-84132) hittade jag ett tips om att ha två kolumner, en för sekunder och en för hundradelar. Sen bör jag kunna slå ihop dom här med t.ex. CONCAT_WS.

Permalänk: https://www.webforum.nu/p/2251922

## #6 — onkelborg, 2010-09-14T08:10Z

Tips: Undvik två kolumner om du ska ställa sql-frågor emot dem. Att göra beräkningar i databasen vid jämförelser är allt annat än bra för prestandan. T.ex. så kan inga index användas, vilket kommer bli katastrof.. :)

(Man kan dela frågan såklart, ställa två villkor istället för ett beräknat, men jag är lite kluven där. Det känns ändå bättre att lägga all information i en kolumn, jag tror du har igen det flera gånger om)

Permalänk: https://www.webforum.nu/p/2251924

## #7 — GunnarD, 2010-09-14T08:29Z

> **[MickeA.com skrev:](https://www.webforum.nu/p/1517202)**
>
> Fast med *unixtimestamp* så måste jag ju ange ett helt datum va? Det här ska användas till en applikation för anmälan till tävlingar. När man anmäler sig måste man ange sin rekordtid på de grenar man vill anmäla sig till.

Ok, då är det enklast att skapa ett heltal (min första variant) och lägga det i en kolumn då kan du enkelt sortera listan.

Permalänk: https://www.webforum.nu/p/2251927

## #8 — MickeA.com, 2010-09-14T09:00Z

Ok, om jag räknar ut heltalet enligt din princip ovan (Min\*60\*100+Sec\*100+Hundradelar) hur får jag "tillbaka" det sen? För användvänlighetens skulle tänkte jag ha tre textrutor (Minut/Sekund/Hundradel) och om jag sen vill visa "heltalet" uppdelat i de tre boxarna, hur gör jag? Står helt still i skallen.

Permalänk: https://www.webforum.nu/p/2251929

## #9 — b242569, 2010-09-14T10:26Z

Borde väl gå med 

Hundradelar \* 60 \* 100 + Hundradelar \* 100 + Hundradelar

1 min, 10 sek och 88 hundradelar = 7088 (1 min = 6000 = 60 \* 100) 
10 sek = 1000 (100 \* 10)

6000 + 1000 + 88 =7088.

Permalänk: https://www.webforum.nu/p/2251933

## #10 — MickeA.com, 2010-09-14T11:02Z

> **[GunnarD skrev:](https://www.webforum.nu/p/1517207)**
>
> Ok, då är det enklast att skapa ett heltal (min första variant) och lägga det i en kolumn då kan du enkelt sortera listan.

Heltal? Det är ju det som är grejen, konverterar jag mm:ss.hh så blir det ju inga heltal, t.ex. 01:20.98 blir ju isf:

```
[B]1[/B] * 60 * 100 + [B]20[/B]  * 100 + [B]98[/B] = [B]602098[/B]
```

Fint, men hur får jag tillbaka **602098** till **01:20.98**?

/R

Sorry, missförstod dig.. Men frågan återstår hur jag får tillbaka till ursprungsformatet.

Permalänk: https://www.webforum.nu/p/2251935

## #11 — pebi, 2010-09-14T11:17Z

Det går väl att göra precisbaklänges. Med exemplet 1:10:88
Sen om du gör det i sql, eller din kod, det är väl vilket som (här från databasen med sql:

```
declare @mins   int
declare @secs  int
declare @hund  int
set @mins = (7088/6000)
set @secs = (7088-(@mins*6000))/100
set @hund = 7088-(@mins*6000)- (@secs*100)
select @mins as minuter ,@secs as sekunder ,@hund as hundradelar
```

  /pebi

Permalänk: https://www.webforum.nu/p/2251936

## #12 — nitro2k01, 2010-09-14T11:30Z

b242569: Fast han ville ju göra det baklänges. :)

Rätt svar:

```php
$temp = $resultset['value'];
$hundradelar = $temp % 100;
$temp = (int)($temp / 100);

$sekunder = $temp % 60;
$temp = (int)($temp / 60);

$minuter = $temp % 60;
$temp = (int)($temp / 60);

$timmar = $temp;
```

Sen skulle du så klart kunna fortsätta enligt samma mönster och få ut dagar (24) om du vill det.

Sen en annan tanke: Se till att validera datat du stoppar in, så ingen skriver in 110 hundradelar av misstag.

Permalänk: https://www.webforum.nu/p/2251937

## #13 — MickeA.com, 2010-09-14T11:43Z

Är kanske dum nu, men gjorde såhär:

```php
$foo['temp'] = 602098; // startvärde taget från mitt exempel i inlägg ovan (01:20.98)
$foo['hundradelar'] = $foo['temp'] % 100;
$foo['temp'] = (int)($foo['temp'] / 100);

$foo['sekunder'] = $foo['temp'] % 60;
$foo['temp'] = (int)($foo['temp'] / 60);

$foo['minuter'] = $foo['temp'] % 60;
$foo['temp'] = (int)($foo['temp'] / 60);

$foo['timmar'] = $foo['temp'];  

$debug[] = print_r($foo, true);
```

Resultatet blir:

```
Array
(
    [temp] => 1
    [hundradelar] => 98
    [sekunder] => 20
    [minuter] => 40
    [timmar] => 1
)
```

Var kommer 1 timma och 40 minuter ifrån?

Permalänk: https://www.webforum.nu/p/2251938

## #14 — pebi, 2010-09-14T11:52Z

Men,

> $foo\['temp'\] = 602098; // startvärde taget från mitt exempel i inlägg ovan (01:20.98)

Det stämmer ju inte.
Det är ju minst en siffra för mycket, en minut. är 60 sekunder, dvs 60\*100 hundradelar = 6000

Så 1:20:98 borde ju vara 6000+(20\*100)+98 = 8098

  /pebi

Permalänk: https://www.webforum.nu/p/2251939

## #15 — MickeA.com, 2010-09-14T12:03Z

Ja, ahh, dum jag är. Körde det där i Kalkylatorn och glömde bort (), så den multiplicerade ju fel.

Tack ska ni ha, allt stämmer nu.

Permalänk: https://www.webforum.nu/p/2251940

---

Tråden på webben: https://www.webforum.nu/amne/databaser-sql/145344-hundradels-sekunder
