Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: TIME -solut mysql:ssä

Sivun loppuun

ViKiNGi [24.02.2012 19:09:38]

#

Moikka,

Aika määritteiden kanssa olisi ongelmaa.

Olen luonut mySQL tietokantaan aika (time 00:00:00) formaatilla solun. Miten olisi järkevintä määritellä tunnit ja minuutit niin, että kyetään pitämään laskua yllä niin, että laskun lopputuloksena on plussa tai miinustunteja. Vai olisiko parasta vain laittaa arvot Char:n?

esim:
+ aika 08:00:00
+ aika 04:30:00
- aika 16:15:00

tarkoituksena on pitää tuntikirjanpitoa joko + tai - arvolla.

Macro [24.02.2012 19:12:23]

#

Anteeksi kuinka...?

Ei kai tunneille ja minuuteille ole kuin yksi esitystapa, numeroina nimittäin.

Metabolix [24.02.2012 19:29:01]

#

Kerro, mitä yrität tehdä, niin sinulle kerrotaan, miten se kannattaisi tehdä. Selityksestäsi ei ainakaan saa mitään tolkkua.

Vai kävikö niin, että mitään ongelmaa ei olekaan? Ajoilla voi nimittäin laskea ihan suoraan:

SELECT TIME(TIME("05:04:03") - TIME("18:19:20"))
-- Tulos: -13:15:17

Petja [26.02.2012 14:33:17]

#

Selitit kyllä minustakin hieman ... epäselvästi ...

Minä tallentaisin tiedot kyllä pelkässä numeromuodossa sekunteina tai minuutteina. Olet tekemässä oletettavasti jotain työajanlaskuohjelmaa.

ViKiNGi [04.03.2012 10:15:07]

#

Juu, siis tarkoituksena on laskea tietokannasta plussaa ja erikseen miinusta antavat tunnit. Toisesta saa positiivisia tunteja ja toisista tehtävistä negatiivisia. Lähinnä tuo 60min kierto vs. desimaalit aiheuttaa harmaita hiuksia.

Itse tuo metabolixin antama time(time()-time()) ei toiminut. Kyseessä kuitenkin soluna datetime.

Itselläni vähän uutta aluetta tuo laskeminen ajalla.

Macro [04.03.2012 10:22:04]

#

Muuta Metabolixin koodista miinusmerkki plusmerkiksi. Jos sinulla on negatiivinen luku ja vähennät sen jostain toisesta, niin siitä tuleekin pluslasku.

5 - (-5) = 5 + 5 = 10
5 + (-5) = 5 - 5 = 0

Vai osaakohan se laskea noin ovelasti?

Metabolix [04.03.2012 12:57:41]

#

ViKiNGi kirjoitti:

Kyseessä kuitenkin soluna datetime.

Aluksi sanoit, että on TIME. Mikä siellä nyt oikeasti on ja mitä siitä pitää laskea? Anna konkreettinen esimerkki riveistä (esim. 7 riviä) ja halutusta tuloksesta.

ViKiNGi [04.03.2012 16:44:57]

#

tiedot jotka tallennan:
- merkintä alkaa (datetime) 2012-01-01 08:00:00
- merkintä päättyy (datetime) 2012-01-01 12:00:00

On kahden tyyppisiä tunteja:
- plussaa kerryttäviä tunteja
- miinustunteja

työntekijän tunnit voivat olla plussalla 2:30 tai miinuksella -1:30 riippuen saldoista..

tuo tietojen käsittely niin, että lukuarvo olisi tunteina ja minuutteina ei oikein mahdu mun päähäni =)

Macro [04.03.2012 16:55:50]

#

Selitit ihan samalla tavalla kuin aloitusviestissäkin. Mutta koitetaans... Jotenkin näin kenties?

SELECT TIMEDIFF("2012-01-01 12:00:00", "2012-01-01 08:00:00")
-- Tulos: 04:00:00

SELECT TIMEDIFF("2012-01-01 08:00:00", "2012-01-01 12:00:00")
-- Tulos: -04:00:00

SELECT TIMEDIFF("2012-01-02 12:00:00", "2012-01-01 08:00:00")
-- Tulos: 28:00:00

SELECT TIMEDIFF("2012-01-01 08:00:00", "2012-01-02 12:00:00")
-- Tulos: -28:00:00

Metabolix [04.03.2012 17:09:42]

#

SELECT TIME(SUM(TIMEDIFF(loppu, alku))) AS plussat FROM taulu WHERE tyyppi = 'plussatunti';
SELECT TIME(SUM(TIMEDIFF(loppu, alku))) AS miinukset FROM taulu WHERE tyyppi = 'miinustunti';
SELECT TIME(SUM(TIMEDIFF(loppu, alku) * IF(tyyppi = 'plussatunti', 1, -1))) AS summa FROM taulu;

ViKiNGi [06.03.2012 14:02:27]

#

kiitos


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta