abonnement Unibet Coolblue Bitvavo
  FOK!-Schrikkelbaas vrijdag 23 februari 2007 @ 20:53:26 #76
1972 Swetsenegger
Egocentrische Narcist
pi_46605544
quote:
Op vrijdag 23 februari 2007 17:52 schreef JeRa het volgende:

[..]

Niet eens, MySQL slaat tijd en datum intern ook op aan de hand van timestamps. Op het moment dat je een SELECT doet of de waarden vergelijkt aan de hand van zo'n datum/tijd dan zet MySQL de boel automagisch om naar een bepaalde representatie.
nog een reden om gewoon datetime te gebruiken.
quote:
Verder ben ik benieuwd naar wat jij denkt meer te kunnen met een DATETIME / TIMESTAMP veld dan met een eigen timestamp die pas in de frontend voor presentatie wordt omgezet?
Niets méér, wel makkelijker met de datesub functie van mysql en dergelijke.
pi_46605642
quote:
Op vrijdag 23 februari 2007 17:50 schreef JeRa het volgende:

[..]

Een integer van 11 tekens lang?

Een INT(11) betekent niets anders dan dat je een integer veld hebt die bij een geactiveerde optie ZEROFILL een getal weergeeft dat wordt geprepad met nullen totdat het 11 nummers bevat. Zonder die optie betekent die 11 helemaal niéts.
Is het niet zo dat met INT(11) ik elke keer 11 tekens aan geheugen reserveer?
quote:
Op vrijdag 23 februari 2007 17:52 schreef JeRa het volgende:

[..]

Niet eens, MySQL slaat tijd en datum intern ook op aan de hand van timestamps. Op het moment dat je een SELECT doet of de waarden vergelijkt aan de hand van zo'n datum/tijd dan zet MySQL de boel automagisch om naar een bepaalde representatie.

Verder ben ik benieuwd naar wat jij denkt meer te kunnen met een DATETIME / TIMESTAMP veld dan met een eigen timestamp die pas in de frontend voor presentatie wordt omgezet?
Daarom is het ook zo dat ik het persoonlijk fijner vind. Zo maakt phpMyAdmin bv. er weer "03 December 2007" van, moet ik het bij query's weer omzetten met MYSQL_DATEFORMAT (oid) enz. enz. Ik moet bekennen dat ik er al lang niet mee gewerkt hebt, dus ik kan niet concreet zijn met mijn voorbeelden.


Ik heb er in het verleden redelijk wat last van gehad, vandaar dat ik het nu weer gewoon met integers doe, en het pas in de frontend omzet. Zo kan ik er ook makkelijk mee rekenen
pi_46605768
quote:
Op vrijdag 23 februari 2007 20:53 schreef Swetsenegger het volgende:

[..]

nog een reden om gewoon datetime te gebruiken.
Nadeel is wel dat MySQL (vaak overbodige) informatie opslaat zoals milliseconden en timezones en dus meer schijfruimte nodig heeft om iets op te slaan wat je waarschijnlijk nooit nodig zult hebben. Als je veel om performance geeft en je ontzettend veel records hebt (miljoenen in mijn geval) wil je de DATETIME toch echt vermijden
quote:
[..]

Niets méér, wel makkelijker met de datesub functie van mysql en dergelijke.
Dat is relatief, het ligt er maar net aan waar je de bewerkingen doet. Ik vind het persoonlijk veel gemakkelijker om alle tijdsberekeningen met unix epoch timestamps in PHP te doen en MySQL de resultaten daarvan te voeren in plaats van date/time strings aan MySQL door te geven. 90% van de dingen die ik zo doe gaan gemakkelijker (en ook duidelijker in de code) door timestamps te gebruiken, en voor die overige 10% gebruik ik timestamp -> datetime conversies in MySQL (dezelfde die MySQL impliciet toch al zou gebruiken als je DATETIME gebruikt)
pi_46605866
quote:
Op vrijdag 23 februari 2007 20:56 schreef Geqxon het volgende:

[..]

Is het niet zo dat met INT(11) ik elke keer 11 tekens aan geheugen reserveer?
Bij lange na niet, een signed of unsigned integer in MySQL neemt gewoon 4 bytes in beslag die 11 is alléén voor ZEROFILL, that's it.
quote:
[..]

Daarom is het ook zo dat ik het persoonlijk fijner vind. Zo maakt phpMyAdmin bv. er weer "03 December 2007" van, moet ik het bij query's weer omzetten met MYSQL_DATEFORMAT (oid) enz. enz. Ik moet bekennen dat ik er al lang niet mee gewerkt hebt, dus ik kan niet concreet zijn met mijn voorbeelden.

Ik heb er in het verleden redelijk wat last van gehad, vandaar dat ik het nu weer gewoon met integers doe, en het pas in de frontend omzet. Zo kan ik er ook makkelijk mee rekenen
Ik ben ook iemand van presentatie in de presentatielaag en niet in de opslaglaag, dus ik zou ook voor de timestamps gaan. Een RDBMS zie ik als een handig systeem om snel informatie aan elkaar te koppelen, maar wat ik vervolgens met die informatie doe laat ik toch echt aan de presentatielaag over
pi_46606048
quote:
Op vrijdag 23 februari 2007 21:02 schreef JeRa het volgende:

[..]

Bij lange na niet, een signed of unsigned integer in MySQL neemt gewoon 4 bytes in beslag die 11 is alléén voor ZEROFILL, that's it.
Wat mij van Oracle SQL bij staat, is dat als ik een Varchar2(30) in mijn database heb, dat hij dan altijd 30 tekens aan geheugen inneemt, ongeacht wat er in staat. Daarom is het juist zo belangrijk dat je kijkt welke data in je database komt, en hoe groot dat normaliter is. Maar dat is zo te horen dus niet met MySQL integers
pi_46606136
quote:
Op vrijdag 23 februari 2007 21:07 schreef Geqxon het volgende:

[..]

Wat mij van Oracle SQL bij staat, is dat als ik een Varchar2(30) in mijn database heb, dat hij dan altijd 30 tekens aan geheugen inneemt, ongeacht wat er in staat. Daarom is het juist zo belangrijk dat je kijkt welke data in je database komt, en hoe groot dat normaliter is. Maar dat is zo te horen dus niet met integers
Daar gaat iets helemaal fout

Een VARCHAR2 (achterlijke benaming trouwens, ach ja ) neemt net zoveel tekens in beslag als de string lang is die wordt opgeslagen, echter is dat tot een maximum van 30 tekens. Een CHAR neemt áltijd 30 tekens in beslag, want kortere strings krijgen spaties aan het einde totdat er 30 tekens in beslag worden genomen.

Een INT is echter een compleet ander verhaal, die kun je niet zomaar variabele lengten geven omdat de capaciteit daarvan vervolgens exponentieel toeneemt en de meeste processoren niet zo goed omgaan met 80-bits integers, enzo verwarrend dus, maar voor die zerofill feature is het toch zo gedaan.
  FOK!-Schrikkelbaas vrijdag 23 februari 2007 @ 21:17:20 #82
1972 Swetsenegger
Egocentrische Narcist
pi_46606335
quote:
Op vrijdag 23 februari 2007 21:00 schreef JeRa het volgende:

[..]

Nadeel is wel dat MySQL (vaak overbodige) informatie opslaat zoals milliseconden en timezones en dus meer schijfruimte nodig heeft om iets op te slaan wat je waarschijnlijk nooit nodig zult hebben. Als je veel om performance geeft en je ontzettend veel records hebt (miljoenen in mijn geval) wil je de DATETIME toch echt vermijden
Lees de TT nog eens JeRa vooral na de blokhaken
quote:
Dat is relatief, het ligt er maar net aan waar je de bewerkingen doet. Ik vind het persoonlijk veel gemakkelijker om alle tijdsberekeningen met unix epoch timestamps in PHP te doen en MySQL de resultaten daarvan te voeren in plaats van date/time strings aan MySQL door te geven. 90% van de dingen die ik zo doe gaan gemakkelijker (en ook duidelijker in de code) door timestamps te gebruiken, en voor die overige 10% gebruik ik timestamp -> datetime conversies in MySQL (dezelfde die MySQL impliciet toch al zou gebruiken als je DATETIME gebruikt)
Voordat ik wist dat mysql van die handige datum functies had deed ik ook zo ingewikkeld
pi_46606411
quote:
Op vrijdag 23 februari 2007 21:17 schreef Swetsenegger het volgende:

[..]

Lees de TT nog eens JeRa vooral na de blokhaken
[..]

Voordat ik wist dat mysql van die handige datum functies had deed ik ook zo ingewikkeld
Waarom laat je MySQL niet meteen alle HTML genereren?
  FOK!-Schrikkelbaas vrijdag 23 februari 2007 @ 21:23:49 #84
1972 Swetsenegger
Egocentrische Narcist
pi_46606557
quote:
Op vrijdag 23 februari 2007 21:20 schreef JeRa het volgende:

[..]

Waarom laat je MySQL niet meteen alle HTML genereren?
kom kom... beetje nuanceren mag wel. De datum functies van mysql zijn gewoon verdomd handig voor wat de gemiddelde hobby-ist er mee doet.
pi_46606762
quote:
Op vrijdag 23 februari 2007 21:23 schreef Swetsenegger het volgende:

[..]

kom kom... beetje nuanceren mag wel. De datum functies van mysql zijn gewoon verdomd handig voor wat de gemiddelde hobby-ist er mee doet.
De functies die PHP biedt leveren ook een scala aan mogelijkheden, de vraag is waarom je de datum/tijd representatie in de opslaglaag al wilt hebben en niet pas bij de presentatie. Enerzijds valt er wat voor te zeggen voor het type data (je gebruikt een veld met een bepaald type om data met een bepaald type op te slaan) maar anderzijds is het voor veel dummies een stuk gemakkelijker om simpelweg te vergelijken tussen secondes aangezien ontzettend veel elementen in PHP dit ook vereisen
  FOK!-Schrikkelbaas vrijdag 23 februari 2007 @ 21:35:37 #86
1972 Swetsenegger
Egocentrische Narcist
pi_46606919
quote:
Op vrijdag 23 februari 2007 21:30 schreef JeRa het volgende:

[..]

De functies die PHP biedt leveren ook een scala aan mogelijkheden, de vraag is waarom je de datum/tijd representatie in de opslaglaag al wilt hebben en niet pas bij de presentatie. Enerzijds valt er wat voor te zeggen voor het type data (je gebruikt een veld met een bepaald type om data met een bepaald type op te slaan) maar anderzijds is het voor veel dummies een stuk gemakkelijker om simpelweg te vergelijken tussen secondes aangezien ontzettend veel elementen in PHP dit ook vereisen
Ik gebruik het tot op heden alleen om zaken van een dag geleden (of een week of een maand) uit de database te trekken. dan is datesub gewoon verdomd handig. Ik hoef niet eerst in php de tijd te definieren voordat ik iets uit mijn db trek.
pi_46607109
Je weet toch wel dat een dag 86400 seconden zijn?
pi_46607234
quote:
Op vrijdag 23 februari 2007 21:35 schreef Swetsenegger het volgende:

[..]

Ik gebruik het tot op heden alleen om zaken van een dag geleden (of een week of een maand) uit de database te trekken. dan is datesub gewoon verdomd handig. Ik hoef niet eerst in php de tijd te definieren voordat ik iets uit mijn db trek.
Nee, in plaats daarvan definiëer je 'm in de opslaglaag. Ik zie geen verschil.
pi_46607578
Nu we toch over timestamps aan het miepen zijn :+

1
2
3
<?php
$timestamp
= mktime(0,0,0,date("m",time()),date("d",time()),date("y",time()));
?>


Het resultaat? De timestamp van vandaag, exact op 00:00:00. Ik vind het enorm ranzige code, en vroeg mij af hoe ik dat netter ga krijgen?
  FOK!-Schrikkelbaas vrijdag 23 februari 2007 @ 21:59:23 #90
1972 Swetsenegger
Egocentrische Narcist
pi_46607654
quote:
Op vrijdag 23 februari 2007 21:46 schreef JeRa het volgende:

[..]

Nee, in plaats daarvan definiëer je 'm in de opslaglaag. Ik zie geen verschil.
Het bespaart me moeite want met een timestamp moet ik nadenken en
WHERE thedate<=DATE_SUB(NOW(), INTERVAL 1 DAY)
is gewoon easy en gemakkelijk en helder leesbaar enzo. Dat snap ik over een jaar nog Al dat gereken met microsecondes heb ik als voormalig uurwerkmaker een pleurishekel.

Ik bedoel, het hele idee van microtime is om te huilen natuurlijk. Het aantal microseconden verstreken sinds 1 januari 1970? Welke bosmongool heeft dat verzonnen? Hou dan in godesnaam gewoon de algemeen geaccepteerde epoch aan van 01-01-0000.
  FOK!-Schrikkelbaas vrijdag 23 februari 2007 @ 22:00:00 #91
1972 Swetsenegger
Egocentrische Narcist
pi_46607684
quote:
Op vrijdag 23 februari 2007 21:57 schreef Geqxon het volgende:
Nu we toch over timestamps aan het miepen zijn
[ code verwijderd ]

Het resultaat? De timestamp van vandaag, exact op 00:00:00. Ik vind het enorm ranzige code, en vroeg mij af hoe ik dat netter ga krijgen?
Niet... dat gekut met tijd in php is gewoon ranzig.
pi_46607965
quote:
Op vrijdag 23 februari 2007 21:57 schreef Geqxon het volgende:
Nu we toch over timestamps aan het miepen zijn
[ code verwijderd ]

Het resultaat? De timestamp van vandaag, exact op 00:00:00. Ik vind het enorm ranzige code, en vroeg mij af hoe ik dat netter ga krijgen?
strtotime('00:00') ofzo?
pi_46607992
quote:
Op vrijdag 23 februari 2007 21:59 schreef Swetsenegger het volgende:

[..]

Het bespaart me moeite want met een timestamp moet ik nadenken en
WHERE thedate<=DATE_SUB(NOW(), INTERVAL 1 DAY)
is gewoon easy en gemakkelijk en helder leesbaar enzo. Dat snap ik over een jaar nog Al dat gereken met microsecondes heb ik als voormalig uurwerkmaker een pleurishekel.

Ik bedoel, het hele idee van microtime is om te huilen natuurlijk. Het aantal microseconden verstreken sinds 1 januari 1970? Welke bosmongool heeft dat verzonnen? Hou dan in godesnaam gewoon de algemeen geaccepteerde epoch aan van 01-01-0000.
Gelukkig hebben we ook negatieve timestamps
quote:
Op vrijdag 23 februari 2007 22:00 schreef Swetsenegger het volgende:

[..]

Niet... dat gekut met tijd in php is gewoon ranzig.
Nee, javascript is daar lekker in
pi_46608038
quote:
Op vrijdag 23 februari 2007 21:59 schreef Swetsenegger het volgende:

[..]

Het bespaart me moeite want met een timestamp moet ik nadenken en
WHERE thedate<=DATE_SUB(NOW(), INTERVAL 1 DAY)
is gewoon easy en gemakkelijk en helder leesbaar enzo. Dat snap ik over een jaar nog Al dat gereken met microsecondes heb ik als voormalig uurwerkmaker een pleurishekel.

Ik bedoel, het hele idee van microtime is om te huilen natuurlijk. Het aantal microseconden verstreken sinds 1 januari 1970? Welke bosmongool heeft dat verzonnen? Hou dan in godesnaam gewoon de algemeen geaccepteerde epoch aan van 01-01-0000.
Ehm, waarom begin je opeens over microtime? time() is voldoende hoor en het refereert natuurlijk naar de standaard Unix times, die vooral op unix-like systemen wordt gebruikt.
pi_46608063
quote:
Note: If the number of the year is specified in a two digit format, the values between 0-69 are mapped to 2000-2069 and 70-100 to 1970-2000.
Ik ruik een tweede milenium bug... en dat is waarom mijn opa altijd zei: DD-MM-YYYY !
  FOK!-Schrikkelbaas vrijdag 23 februari 2007 @ 22:16:57 #96
1972 Swetsenegger
Egocentrische Narcist
pi_46608154
quote:
Op vrijdag 23 februari 2007 22:13 schreef JeRa het volgende:

[..]

Ehm, waarom begin je opeens over microtime? time() is voldoende hoor en het refereert natuurlijk naar de standaard Unix times, die vooral op unix-like systemen wordt gebruikt.
Nog steeds gezeik
En erger... ik win er niets mee.
pi_46608195
quote:
Op vrijdag 23 februari 2007 22:16 schreef Swetsenegger het volgende:

[..]

Nog steeds gezeik
Ontzettend handig als je relatief wilt werken, bijvoorbeeld wilt weten hoeveel tijd er tussen twee data zit. Als je dat wilt doen met DATETIME moet je eerst allerlei vage conversiefuncties gaan gebruiken
  FOK!-Schrikkelbaas vrijdag 23 februari 2007 @ 22:23:12 #98
1972 Swetsenegger
Egocentrische Narcist
pi_46608364
quote:
Op vrijdag 23 februari 2007 22:18 schreef JeRa het volgende:

[..]

Ontzettend handig als je relatief wilt werken, bijvoorbeeld wilt weten hoeveel tijd er tussen twee data zit. Als je dat wilt doen met DATETIME moet je eerst allerlei vage conversiefuncties gaan gebruiken
SELECT unix_timestamp(date1) -
unix_timestamp(date2) FROM table_name



Maar dat klopt als je wil weten wat er voor tijd vertstreken is tussen twee records is dat lastig. Maar ik wil voor mijn huidige toepassingen altijd weten hoeveel tijd er tussen en record en NU zit. En daar zijn de mysql functies gewoon verdomd handig voor
  zaterdag 24 februari 2007 @ 00:35:25 #99
46383 Tiemie
sowieso wel!
pi_46612839
Ik gebruik altijd int's voor timestamps...waarom? omdat 9 v/d 10x de database de bottleneck is in een (grote) website. de database is voor mij puur voor de opslag.
pi_46617521
Ik ben bezig met een template parser. Nou loop ik alleen tegen een probleem aan de code doet vervangt de waardes uit de template niet:

1
2
3
foreach ($this->tags as $tag=>$data){
str_replace("<%$tag%>" , $data , $this->output);
}


$tags is een class array met de tags uit de template en de vervang data. Als ik alle delen afzondelijk echo krijg ik ze gewoon te zien. Alleen het replacen gaat niet goed.


Laat maar ik ben nog slaperig. Moet natuurlijk zijn

1$this->output = str_replace("<%$tag%>" , $data , $this->output);


[ Bericht 12% gewijzigd door ExCibular op 24-02-2007 09:52:02 ]
abonnement Unibet Coolblue Bitvavo
Forum Opties
Forumhop:
Hop naar:
(afkorting, bv 'KLB')