Datum
Ik heb een timestamp, en nu wil ik graag een resultaat als:nu net3 uur geledengisteravondvorige week dinsdag2 jaar geleden...Ik ben al een tijd aan het denken, maar ik heb geen idee hoe ik hieraan moet beginnen. Hoe maak ik dit?
Met de juiste intervallen heb je dit in 5 minuten voor elkaar. Waar komt deze timestamp vandaan? Uit een database? Zo ja, waarom gebruik je dan niet gewoon een DATETIME, dan kun je met een hele berg eenvoudige datum- tijdfuncties aan de slag om bovenstaande opgaves uit te rekenen.
Alvast bedankt Oké, dan heb ik een datetime. Welke hele berg datum- en tijdfuncties heb ik dan allemaal nodig? Met SQL ben ik al helemaal niet zo goed. DATE_FORMAT en
@Wes: bedankt. Ik snap DATE_FORMAT(), HOUR(), DAY(), MINUTE(), DATEDIFF(), DATE_ADD() en DATE_SUB () allemaal wel, maar ik weet niet hoe ik die toe moet passen om het resultaat te krijgen wat ik wens. @Blanche: dat is dus dezelfde (je eigen) tutorial :-P Maar volgens mij zit er een foutje bij voorbeeld 22 op lijn 26, maar dat terzijde.
ps. Foutje hersteld. Tnx.
je moet DATEDIFF/DATE_SUB en INTERVAL gebruiken En als die query dan een rij oplevert, dan weet je dat je met "gisteravond" te maken hebt.
Dit lijkt me niet heel ver van de meest omslachtigste manier.
Ik weet echter ook niet hoe ik dit anders aan kan pakken. Zou het dan zoiets moeten worden?
De manier die je nu gebruikt werkt wel, alleen geef je de tijd absoluut op. Dat betekent dat deze query alleen vandaag geldig is en morgen niet meer...
Je pakt direct een vrij lastige query omdat 'gisteravond' een vrij ruim begrip is. Je bedoelt dan de periode op de vorige dag tussen 6 en 12 's avonds? Dynamisch zou het dan zoiets worden:
Wat wil je precies ophalen? Topics die gisteravond geplaatst zijn?
Ik hoop dat jullie het nu wel snappen :) Excuses, ik heb jullie verkeerd laten denken. Wat ik wil is de tijd van een bericht ophalen. Hoe wil ik de tijd weergegeven hebben? Wel, met bijvoorbeeld deze resultatennu net3 uur geledenvannacht / afgelopen nachtgisteravondvorige week dinsdag2 jaar geleden...En gisteravond is dan inderdaad de vorige dag tussen 18:00 en 23:59. Ik zou hierbij denken aan heel veel ifjes, en niet aan date_format, date_sub, between, ... enz.
@Henk: je wilt dus bij ieder bericht de tijd weergeven als een soort label? Dan zul je dus voor alle mogelijk verschillende tijdsintervallen een label aan moeten maken, en dan zul je inderdaad met veel if/elseif/elsejes moeten werken...
Of begrijp ik je nu verkeerd? @Frank: daar heb je natuurlijk helemaal gelijk in :)
Met de juiste intervallen heb je dit in 5 minuten voor elkaar.
Alvast bedankt
tutorial. Daar leg ik het gebruik van datum/tijd functies in MySQL uitgebreid uit...
Kijk eens naar deze @Wes: bedankt. Ik snap DATE_FORMAT(), HOUR(), DAY(), MINUTE(), DATEDIFF(), DATE_ADD() en DATE_SUB () allemaal wel, maar ik weet niet hoe ik die toe moet passen om het resultaat te krijgen wat ik wens.
Quote:
Ja dat klopt, maar daarin staat wel duidelijk beschreven hoe je met de datum/tijd functies van MySQL werkt. Het lijkt me dat je met voorbeelden 13 t/m 19 een heel eind moet kunnen komen...@Blanche: dat is dus dezelfde (je eigen) tutorial :-P Maar volgens mij zit er een foutje bij voorbeeld 22 op lijn 26, maar dat terzijde.
ps. Foutje hersteld. Tnx.
Quote:
Here is an example that uses date functions. The following query selects all rows with a date_col value from within the last 30 days:
mysql> SELECT something FROM tbl_name
-> WHERE DATE_SUB(CURDATE(),INTERVAL 30 DAY) <= date_col;
mysql> SELECT something FROM tbl_name
-> WHERE DATE_SUB(CURDATE(),INTERVAL 30 DAY) <= date_col;
Gewijzigd op 01/01/1970 01:00:00 door PHP Newbie
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
SELECT
tijd
FROM
topics
WHERE
tijdstip BETWEEN '2007-08-12 18:00:00' AND '2007-07-12 23:00:00'
AND
topic_id = 3892
tijd
FROM
topics
WHERE
tijdstip BETWEEN '2007-08-12 18:00:00' AND '2007-07-12 23:00:00'
AND
topic_id = 3892
Dit lijkt me niet heel ver van de meest omslachtigste manier.
Ik weet echter ook niet hoe ik dit anders aan kan pakken.
De manier die je nu gebruikt werkt wel, alleen geef je de tijd absoluut op. Dat betekent dat deze query alleen vandaag geldig is en morgen niet meer...
Je pakt direct een vrij lastige query omdat 'gisteravond' een vrij ruim begrip is. Je bedoelt dan de periode op de vorige dag tussen 6 en 12 's avonds? Dynamisch zou het dan zoiets worden:
Ik hoop dat jullie het nu wel snappen :)
Edit:
Trouwens: ik heb een timestamp (krijg ik binnen via de constructor van mn datum object). Maar ik kan ook MySQL wel gebruiken "desnoods".
Gewijzigd op 01/01/1970 01:00:00 door Henk
@Blanche: De BETWEEN is niet nodig, zolang de tijd > 18:00 uur is en de datum van gisteren, dan zit je al goed. Na middernacht is het namelijk geen gisteren meer, maar vandaag... ;)
@Henk: je wilt dus bij ieder bericht de tijd weergeven als een soort label? Dan zul je dus voor alle mogelijk verschillende tijdsintervallen een label aan moeten maken, en dan zul je inderdaad met veel if/elseif/elsejes moeten werken...
Of begrijp ik je nu verkeerd?