Ik beheer een gastenboekje op een website wat gebruik maakt van de strftime() functie. Ik snap hoe ik de functie moet toepassen, alleen moet ik nu een aantal berichten van een oud gastenboek toevoegen en daarbij moet ik de datums als strftime() zelf in de database toevoegen.
mijn vraag is dus, hoe reken ik een datum om naar die strftime() variabele?
Ben benieuwd of iemand me kan helpen (eigenlijk twijfel ik er niet aan) :)
strftime() is een waardeloze functie wanneer je een datum wilt opslaan in de database. Hoe je het ook went of keert, een DATETIME eist altijd het formaat yyyy-mm-dd hh:mm:ss en een DATE eist het formaat yyyy-mm-dd. Ik ga er dus van uit dat je het verkeerde datatype in jouw database gebruikt, anders had je strftime() niet eens kunnen gebruiken.
Oplossing: Gooi strftime() met een grote boog richting prullenbak, pas het datatype aan en ga vervolgens alles op de juiste manier in de database wegschrijven. De huidige datum en tijd kun je met de MySQL-functie NOW() in de query opnemen. Zie verder hoofdstuk 12.5 van de MySQL-handleiding.
Even een opmerking op die NOW();
Ik doe meestal dit:
$date = date("");
maar dan ingevuld :P
Maar die NOW() in je query is dus sneller en werkt even goed?
Hm ja duidelijk, thanks.
DATETIME zou dus beter zijn, maar op zich werkt het op deze manier ook wel. Als ik alleen maar wist hoe ik bijvoorbeeld "17-11-2006 om 19:18" moest omrekenen naar "1163791099" (dit is een bestaande entry in gastenboek en database)
Ik heb namelijk niet echt veel zin om het script zelf aan te passen om die datums er op de DATETIME manier in te krijgen :)
Tja, reserveer dan maar vast de benodigde tijd om bugs en andere ellende op te gaan lossen. Er zit een belangrijke fout in je database, los deze dan ook zo snel mogelijk op.
Er is bv. geen enkele reden om 17-11-2006 om 19:18 om te rekenen naar 1163791099, wat moet je in hemelsnaam met dit getal doen? Daar kan toch niemand wat mee, of wel dan? Of ben je soms het wiel opnieuw aan het uitvinden en ga je functies/berekenen in php maken waarvoor MySQL gewoon een kant-en-klare functie voor heeft? Ik vrees van wel...
Tja, reserveer dan maar vast de benodigde tijd om bugs en andere ellende op te gaan lossen. Er zit een belangrijke fout in je database, los deze dan ook zo snel mogelijk op.
Er is bv. geen enkele reden om 17-11-2006 om 19:18 om te rekenen naar 1163791099, wat moet je in hemelsnaam met dit getal doen? Daar kan toch niemand wat mee, of wel dan? Of ben je soms het wiel opnieuw aan het uitvinden en ga je functies/berekenen in php maken waarvoor MySQL gewoon een kant-en-klare functie voor heeft? Ik vrees van wel...
Ik wou juist voorkomen dat ik het wiel opnieuw uit moet vinden.. 't is namelijk een bestaand gastenboek ^^
In dat geval hebben 'ze' voor dat gastenboek het wiel opnieuw uitgevonden. Het zou mij alleen niet verbazen dat die is ontwikkeld voor MySQL-versies waarin er geen/weinig database-functies beschikbaar waren. MySQL versies ouder dan 4.1 mogen eigenlijk niet de naam Database hebben, laat staan DBMS. Deze versies zijn eigenlijk te debiel voor woorden. Wil je die versies toch gebruiken, dan heb je geen andere keuze dan het wiel opnieuw uitvinden.
Hopelijk maak jij in de toekomst betere systemen wanneer je zelf een nieuw systeem gaat bouwen.
Succes!
Ps. Vergeet niet dat er betere opensource databases bestaan, bv. PostgreSQL. Die kan serieus concureren met bv. Oracle en DB2.