oisko vinkkiä miten saisin haettua kannasta date-muodossa olevan tiedon aikaleima muotoon? Nyt haku on:
SELECT koulutus_id, to_char(alku_aika, 'DD.MM.YYYY hh24:mi') as alku, to_char(loppu_aika, 'DD.MM.YYYY hh24:mi') as loppu FROM koulutus.
Mutta pitäisi saada haettuna aikaleimana, jotta voisin myöhemmin php:ssä vertaille alku ja loppu_aikaa muihin aikoihin!
Eikös noi alku_aika ja loppu_aika ole sellaisenaan jo aikaleimat?
Tarkoittanet nyt epästandardia UNIX-aikaleimaa. Ei ole Oraclesta kokemusta, mutta siihen joko löytyy Oraclesta oma systeemi, tai sitten ei löydy. Jos ei löydy, niin ei muuta kuin hoidat homman php:n puolella. str2time() on avainsana.
Edittiä: alkoi hämäämään tuo kirjoittamani "epästandardi aikaleima" ja googlehan kertoi, että aikaleima nimenomaan yleensä kertoo ajan sekunteina tai millisekunteina. Sen sijaan standardin mukainen tapa esittää aikaa on aivan eri asia. Siitä löytyy tietoa googlettamalla hakusanalla "ISO 8601". Eli ei kai tuo UNIX-aikaleima aikaleimana mikään epästandardi ole, se vain ei ole standardin mukainen tapa säilöä/ilmaista aika-tietoa.
Niin, ongelma on juuri se että nuo alku ja loppu_aika on tallennettu kantaan date-muodossa, ja noita tietoja pitäisi päästä koodin myöhemmässä vaiheessa veraamaan toiseen lukuun joka on PHP:ssä aikaleimana (mktime) ja käsittääkseni PHP ei osaa vertailla suoraan < ja > -operaattoreilla onko jokin tietty aika pienempi vai suurempi kuin jokin toinen aika, vaan aikamerkintä pitää muuttaa aikaleimaksi.
Ja ei ole vielä vastaan tullut missään mikä kertoisi että oraclessa olisi jokin käsky-muoto millä saisi nuo alku ja loppu_ajan tulostettua array:n aikaleimana.
Hmm.. harmaita hiukia tulee jo tässä vaiheessa :)
ajv: Mitä epästandardia unix-aikaleimassa on? Millainen on tämä mainitsemasi paremmin standardoitu aikaleima? Miksi siitä ei ole ikinä kuultu missään?
geggo: Kannan suunnittelussa tapahtunut kämmi?-) Yllättävn usein ajan tallentaminen kannan date/time-muodoissa on erittäin huono idea. Iso kokonaislulku on useimmiten ainoa oikea eikä käytettävä ohjelmointikielikään pääse aiheuttamaan sekaannuksia, ei edes PHP.
Korjasinhan tuohon, että ei UNIX-aikaleima aikaleimana mikään epästandardi ole. Aikaleimasta ei ole käsittääkseni olemassa mitään standardia. Sen sijaan on standardi, miten aika tulee esittää (ja tätä standardia myös käsittääkseni ainakin kaikki tuntemani tietokannat noudattavat). Kuten myös aikaisemmin sanoin tästä standardista (ISO 8601) löytyy googlella tietoa.
Esim:
http://www.cl.cam.ac.uk/~mgk25/iso-time.html
http://www.w3.org/TR/NOTE-datetime
Aihe on jo aika vanha, joten et voi enää vastata siihen.