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.
Anteeksi kuinka...?
Ei kai tunneille ja minuuteille ole kuin yksi esitystapa, numeroina nimittäin.
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
Selitit kyllä minustakin hieman ... epäselvästi ...
Minä tallentaisin tiedot kyllä pelkässä numeromuodossa sekunteina tai minuutteina. Olet tekemässä oletettavasti jotain työajanlaskuohjelmaa.
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.
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?
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.
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 =)
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
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;
kiitos
Aihe on jo aika vanha, joten et voi enää vastata siihen.