Forum » Programiranje » Kako shranjujete "teden v letu" in "dan v tednu"? Ponedeljek kot 0 ali 1?
Kako shranjujete "teden v letu" in "dan v tednu"? Ponedeljek kot 0 ali 1?
HotBurek ::
Dobro jutro.
Evo fantje in dekline, eno mini vprašanje.
Kako shranjujete cifri, ki označujeta teden v letu ter dan v tednu.
MariaDB ima dve funkciji: WEEK in WEEKDAY.
In današnji dan je tretji teden v letu, WEEK vrne 2, ter peti dan v tednu, WEEKDAY vrne 4. Ker začne z nulo... prvi teden v letu je 0, ponedeljek je 0.
In zdej če gledam te podatke v bazi, se mi zdi, da bi hitro prišlo do napake, ker sem navaje, da je prvi teden v letu prikazan z 1, ter da je ponedeljek prikazan z 1... in petek 5... ter sobota 6.
Evo fantje in dekline, eno mini vprašanje.
Kako shranjujete cifri, ki označujeta teden v letu ter dan v tednu.
MariaDB ima dve funkciji: WEEK in WEEKDAY.
In današnji dan je tretji teden v letu, WEEK vrne 2, ter peti dan v tednu, WEEKDAY vrne 4. Ker začne z nulo... prvi teden v letu je 0, ponedeljek je 0.
In zdej če gledam te podatke v bazi, se mi zdi, da bi hitro prišlo do napake, ker sem navaje, da je prvi teden v letu prikazan z 1, ter da je ponedeljek prikazan z 1... in petek 5... ter sobota 6.
root@debian:/# iptraf-ng
fatal: This program requires a screen size of at least 80 columns by 24 lines
Please resize your window
fatal: This program requires a screen size of at least 80 columns by 24 lines
Please resize your window
- spremenilo: HotBurek ()
DamijanD ::
Zakaj bi pa to shranjeval? Načeloma shraniš podatek: datum/timestamp - kaj pa je to te pa mogoče zanima potem v kakšnem reportu/selectu.
Utk ::
V večini baz se da nastavit kater dan je prvi v tednu.
Včasih te ne zanima datum, ampak dan v tednu.
Zakaj bi pa to shranjeval? Načeloma shraniš podatek: datum/timestamp - kaj pa je to te pa mogoče zanima potem v kakšnem reportu/selectu.
Včasih te ne zanima datum, ampak dan v tednu.
Zgodovina sprememb…
- spremenil: Utk ()
k--p ::
Osebno bi se držal defaultov, večina zadev se začne šteti z 0 v računalništvu, ni važno kaj si navajen.
Za GUI izpis prišteješ 1 in to je to ( npr. si narediš kako helperfunkcijo weekdayHumanFormat oz. svoj mapping kjer ti 0 preslika v "PON" itd. in to dosledno uporabljas).
Za GUI izpis prišteješ 1 in to je to ( npr. si narediš kako helperfunkcijo weekdayHumanFormat oz. svoj mapping kjer ti 0 preslika v "PON" itd. in to dosledno uporabljas).
Zgodovina sprememb…
- spremenilo: k--p ()
Utk ::
Sql server dneve v tednu šteje od 1 naprej. To je nekako bolj logično, ker podobno kot datum, številka sama pomeni nek podatek, in ni samo index na pravi podatek.
Zgodovina sprememb…
- spremenil: Utk ()
David Mayer ::
Če to denormalizacijo uporabljaš zaradi nekih optimizacij (in je že vse ostalo pripeljano na maksimum), bi jaz dal oboje 0-based, itak imaš vedno na koncu nek 0-based lookup in je tako dosledno po vsej vertikali. Narediš pa, kakor ti paše, vprašanje celo, če mora biti fizično polje in dosledno usklajeno z dejanskim datetime poljem (najbrž samo eno takšno polje v tabeli zdaj in za vedno?), lahko je polje kot izraz ali pa se poizveduje skozi view. Odgovor - tega načeloma ne shranjujemo.
DamijanD ::
Utk - kaj bi pa bil kakšen tak primer zapisa, kjer te zanima samo dan v tednu, ne pa tudi dejanski datum? (Ne narobe razumeti, ne trdim da ga ni ampak sam se nobenega ne spomnim in me res zanima)
Utk ::
Če imaš nek dogodek, ki se mora zgodit recimo ob torkih in četrtkih, ne glede na datum. Kater datum bi ti tam shranil?
Zgodovina sprememb…
- spremenil: Utk ()
DamijanD ::
aha v ta namen (jaz sem imel v glavi samo zadeve, ki so se že zgodile
) - verjetno bi uporabil cron izraz, če bi hotel biti zelo splošen
DamijanD ::
Direktno težko (učinkovito). Verjetno bi (za namen iskanja dogodkov na nek dan) imel nek index po sparsanem cronu (v servisu). Če bi pa to rabil direktno na DB nivoju, bi bilo pa to malo težje...
Utk ::
Zakaj potem ne bi raje shranil dan v tednu kot integer in točno uro kot ali uro ali string, oboje bi bilo bolje kot parsanje.
twom ::
First day of week je nedelja... se pravi nedelja 0, ponedeljek 1. Saj vem, mal sem žleht 
p.s. saj vem, first day of week je lahko tudi monday
p.s. saj vem, first day of week je lahko tudi monday
DamijanD ::
Zakaj potem ne bi raje shranil dan v tednu kot integer in točno uro kot ali uro ali string, oboje bi bilo bolje kot parsanje.
odvisno od potreb. Če je najvišja prioriteta, da je to definirano, potem ja. Če je pa lepše, da imaš nek dogodek samo enkrat vpisan z bolj kompleksnim urnikom (torek in četrtek npr), potem pa samo eno polje ne zadostuje (mogoče bi raje imel kar byte in gledal bitke, tako bi lahko imel poljubno kombinacijo dni...). Pač odvisno od potreb in namena. Ampak ja vidim smisel po tem v določenih situacijah.
Vredno ogleda ...
| Tema | Ogledi | Zadnje sporočilo | |
|---|---|---|---|
| Tema | Ogledi | Zadnje sporočilo | |
| » | C# in DateTimeOddelek: Programiranje | 1546 (1366) | FiDeK |
| » | Prazniki 2010 (katastrofa) - kaj je potrebno za spremembo zakona? (strani: 1 2 )Oddelek: Loža | 9504 (7269) | connel |
| » | Iskanje naslednje ponovitve - najboljši algoritem (strani: 1 2 )Oddelek: Programiranje | 4877 (3935) | Thomas |
| » | asp-problem z datumomOddelek: Izdelava spletišč | 1539 (1403) | Old-Death |
| » | Koledar in ponavljajoči se dogodkiOddelek: Programiranje | 989 (899) | darh |