Archief - SELECT timestamps van vandaag

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

Syphon

Legacy Member
Nog iets wat ik probeer te achterhalen. Ik heb de kolom "datum" met in elke rij een unix timestamp. Dus het wordt in de tabel gezet met date('U').

Ik ben een functie aan het schrijven voor het ophalen van de resultaten van vandaag, deze week, deze maand en gewoon alles.

SELECT * FROM tutorials WHERE datum >= '..........'

op de stippelijntjes zou dus moeten staan :
1)- waar de timestamp = aan de dag van vandaag
2)- waar de timestamp = begin van de week tot nu (vanaf 's maandags)
3)- waar de timestamp = begin van de maand tot nu

Fr3aK

Legacy Member
Vandaag:
Code:
SELECT * FROM tutorials WHERE DAYOFYEAR(datum) = DAYOFYEAR(NOW()) AND YEAR(datum) = YEAR(NOW())

Deze week:
Code:
SELECT * FROM tutorials WHERE WEEK(datum,1) = WEEK(NOW(),1) AND YEAR(datum) = YEAR(NOW())

Maand:
Code:
SELECT * FROM tutorials WHERE MONTH(datum) = MONTH(NOW()) AND YEAR(datum) = YEAR(NOW())

Syphon

Legacy Member
is dat niet bedoeld voor tijdweergave in de vorm van 2009-01-03?
Want ik werk hier met unix timestamp.

Heb dit gevonden
DAYOFYEAR(FROM_UNIXTIME(datum)) = DAYOFYEAR(NOW())

het lijkt op eerste zicht correct te werken

Fr3aK

Legacy Member
Hmm, my bad, was ik vergeten, dus gewoon FROM_UNIXTIME rond elke "datum" plaatsen :)

Syphon

Legacy Member
Ik gebruik in heel de database enkel timestamps . Nu lees ik dat dit niet de beste manier is om de datum bij te houden. Omdat ik al makkelijk vele duizenden rijen tot paar miljoen kan hebben binnenkort, zou het dan veel schelen op snelheid om een andere manier te gebruiken?

Fr3aK

Legacy Member
Syphon zei:
Ik gebruik in heel de database enkel timestamps . Nu lees ik dat dit niet de beste manier is om de datum bij te houden. Omdat ik al makkelijk vele duizenden rijen tot paar miljoen kan hebben binnenkort, zou het dan veel schelen op snelheid om een andere manier te gebruiken?
Goh, ik sla datums ook meestal op als UNIX_TIMESTAMP omdat het dan via PHP makkelijker werken is. Ik vermoed dat die paar datum operaties in MySQL niet zoveel "merkbare" impact hebben op de snelheid...

De keuze is aan jou, je kan altijd eens proberen om je datums om te zetten, dan zie je meteen of het een impact heeft, een paar simpele queries should do the job.

Lord Kveldulv

Legacy Member
In mysql steek ik altijd zo weinig mogelijk als nodig is. Ik ga bijv. geen datetime gebruiken als ik enkel een date nodig heb. En je hebt in mysql de UNIX_TIMESTAMP() functie voor als je timestamps in php wilt gebruiken.

Overigens is TIMESTAMP wellicht het minst performante fieldtype van allemaal. Het is in feite een DATETIME met nog extra properties. Ik zou het enkel gebruiken als je het echt nodig hebt.

Syphon

Legacy Member
Momenteel loopt de website vlot genoeg. Zulke dingen kan ik toch later nog vrij makkelijk aanpassen bij mijn jaarlijkse vernieuwing. Dan herschrijf ik delen van de website want dan heb ik altijd wel nieuwe dingen geleerd wat de performance ten goede komt.
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan