Miten kannattaisi yksinkertaisimmin tehdä laskuri, joka laskee tietystä päivämäärästä kuluneen ajan ja muuttaa sen tietyksi luvuksi.
Eli siis laskee vuosia, muttei 365pv/a tyylillä vaan 60pv/a. Etsin ihan suoraa koodipätkää, olen itse näiden kanssa ihan toivoton :D Ja se päivämäärä pitäisi pystyä poimimaan tietokannasta.
Saa linkata myös valmiita koodipätkiä :)
No jos sulla on tietokannassa date-tyyppisiä arvoja, niin saat laskettua nämä kuvitteelliset 60-päiväiset vuodet esim. seuraavasti:
SELECT ( UNIX_TIMESTAMP('pvm') - UNIX_TIMESTAMP('2011-01-01') ) / ( 3600*24*60 ) AS vuodet FROM taulu;
Tuo jälkimmäinen päivämäärä on se, josta alkaen aikaa lasketaan ja se tulee ilmoittaa muodossa YYYY-MM-DD. Viimeisenä oleva kertolasku laskee 60 vuorokauden sekunnit, sillä myös UNIX_TIMESTAMP-funktio palauttaa sekuntimääräisen arvon.
Kiitosta :) Mutta siis miten tuon komennon saa muokattua sellaiseksi, että se nappaa sen sieltä taulusta? Kun ymmärsin että tuossa 'pvm' kohdassa se valitsee sen sarakkeen, mutta mitä tuohon kakkoskohtaan pitää laittaa?
Kohta 'pvm' pitää ottaa pois (tai siihen voi laittaa NOW()), ja kohdan '2011-01-01' tilalle pitää laittaa haettavan sarakkeen nimi.
Jos päivämäärät on date tyyppisiä niin menisi varmaan ilman muuntoa sekunneiksikin tyyliin:
SELECT (DATEDIFF(CURRENT_TIMESTAMP, aika_sarakkeen_nimi) / 60) AS vuodet FROM taulu;
Kiitos kokeilen :)
----
Ei onnistunut. Tai siis nyt jäi ongelmaksi se, että millä komennolla sen saa esiintymään siellä sivuilla :D $vuodet vai miten?
Sain toimimaan, miten noiden desimaalien määrää voi muuttaa täältä voi huomata, että kaunis neljädesimaalinen luku tuolla syntymäajan jälkeen suluissa - perustiedoissa kuvan alla.
Tarkoitus olisi saada kokonaisuluku tai korkeintaan yksidesimaalinen luku.
echo (int)$vuodet
Muuttaa muuttujan int-tyyppiseksi, jolloin se pyöristyy aina täyteen tasalukuun.
Voit käyttää myös floor(), jolloin luku pyöristetään alaspäin täyteen lukuun.
echo floor($vuodet);
https://www.php.net/manual/en/function.floor.php
tai esim. printf() -funktiota, jos haluat desimaalin näkyvän aina:
echo printf("%.1f",$vuodet);
https://www.php.net/manual/en/function.printf.
Kiitos! Nyt toimii tuolla floorilla :)
Aihe on jo aika vanha, joten et voi enää vastata siihen.