Ik zit met een, waarschijnlijk, simpel probleempje. Ik probeer namelijk via php een datum in te voeren in mysql. De datum zit in een gewone string, in mysql heeft de doelcel de eigenschap 'datetime' de standaardwaarde is '0000-00-00 00:00:00'. Het werkt zo echter niet. Moet ik misschien de string omschrijven naar een datumstring?
je moet de var wel ook het formaat '0000-00-00 00:00:00' geven. dus bijvoorbeeld:
$datumvar="2002-11-24 16:59:22";
$datumvar="2002-11-24 16:59:22";
... he's gone.
Verwijderd
Waarom moeilijk doen? Je kunt het beste gewoon de tijd als time(); opslaan (een timestamp dus) en het eruit te halen met:
Zo kun je ook nog eens snel het formaat veranderen.
PHP:
1
| <?// gewoon ff als voorbeeldje...$timestamp = time();$formaat = "d-m-Y H:i";echo date("$formaat", $timestamp);?> |
Zo kun je ook nog eens snel het formaat veranderen.
oscarvdb heeft een werkbare en algemeen gebruikte versie gegeven, wat natuurlijk ook kan is om de datum functies van mysql zelf te gebruiken. De datum en tijd opslaan als een string is echter het domste wat je kunt doen.
Back In Black!
"Je moet haar alleen aan de ketting leggen" - MueR
Ik vind het bijvoorbeeld prettiger om datum/tijd zaken op te sslaan als een UNIX timestamp in een MySQL kolom van type INT(10).
Rustacean
Niet doen! Bij mysql zit de functie unix_timestamp() om een datum veld in de tabel om te zetten naar een unix timestamp. Hierdoor kun je altijd het unix timstamp formaat uit de DB halen!Op dinsdag 09 april 2002 10:53 schreef Manuzhai het volgende:
Ik vind het bijvoorbeeld prettiger om datum/tijd zaken op te sslaan als een UNIX timestamp in een MySQL kolom van type INT(10).
Nu denk je mischien waarom je het niet als int op moet slaan?
De reden is eigenlijk redelijk simpel. Het kost nauwelijks tot niks extra om het als een datum op te slaan en je kunt nog steeds de normale datum functies gebruiken....
Je kunt natuurlijk met die ints rekenen om tijdspannes te krijgen, maar ik ken legio voorbeelden waarbij je met ints toch redelijk in de knoop raakt.
Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'
Je kunt er natuurlijk ook altijd nog een FROM_UNIXTIME() tussengooien. Dan werken je functies weerOp dinsdag 09 april 2002 12:15 schreef Janoz het volgende:
[..]
De reden is eigenlijk redelijk simpel. Het kost nauwelijks tot niks extra om het als een datum op te slaan en je kunt nog steeds de normale datum functies gebruiken....
W00ha!Op dinsdag 09 april 2002 12:42 schreef eborn het volgende:
Je kunt er natuurlijk ook altijd nog een FROM_UNIXTIME() tussengooien. Dan werken je functies weer
Rustacean
Ik heb er wel wat op te zeggen: waarom moeilijk doen als het makkelijk kan?Manuzhai:
W00ha!En wat heeft Janoz hierop te zeggen?
Let wel op dat een UNIX timestamp niet hetzelfde is als een MySQL timestamp.Markuz:
Je kunt het beste gewoon de tijd als time(); opslaan (een timestamp dus)
Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz
Verwijderd
Hoe kun je die eigenlijk omzetten?Op dinsdag 09 april 2002 13:23 schreef drm het volgende:
[..]
Ik heb er wel wat op te zeggen: waarom moeilijk doen als het makkelijk kan?
[..]
Let wel op dat een UNIX timestamp niet hetzelfde is als een MySQL timestamp.
Met FROM_UNIXTIME() toch?
Klopt, maar ik kan me herinneren dat ik die 2 in mijn "n00btijd" nog wel eens door mekaar haalde. Dus ik denk, ik zeg het maar... Anderen mogen ook best van mijn fouten leren
Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz
Waar hebben we het nu over? Over UNIX_TIMESTAMP() of het type TIMESTAMP? Of beiden?Op dinsdag 09 april 2002 13:51 schreef daniel_hoenderdos het volgende:
Hoe dan ook, ikzelf gebruik die mysql timestamp nooit.
Het enige wat ik hierop te zeggen heb is dat ik binnen de database het liefst met de daarvoor bedoelde datatypen werk. Alleen bij het eruit halen (tussen select en where) en erin stoppen (bij de values) gebruik ik conversie functies. Als je denkt dat je slim bezig bent met het gebruiken van overbodige conversiefuncties in je where condities moet je dat vooral blijven doenOp dinsdag 09 april 2002 13:09 schreef Manuzhai het volgende:
[..]
W00ha!En wat heeft Janoz hierop te zeggen?
Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'
Verwijderd
Ik heb het over de mysql type TIMESTAMP die je via de opdracht UNIX_TIMESTAMP naar een UNIX timestamp kunt omzetten.Op dinsdag 09 april 2002 14:02 schreef eborn het volgende:
[..]
Waar hebben we het nu over? Over UNIX_TIMESTAMP() of het type TIMESTAMP? Of beiden?
Ik gebruik dat mysql type TIMESTAMP nooit, maar sla mijn timestamps altijd als UNIX Timestamp op door met time() te werken.
Snap je het nog?
agreed.Janoz:
[..]
Oh: nog een nadeeltje van TIMESTAMP (de eerste die voorkomt in een tabel), wordt automatisch geupdate naar NOW() bij elke update. Als je dit wilt voorkomen kun je dit gebruiken:
code:
1
2
3
4
5
| UPDATE ... SET ... date=date; |
waar date dus desbetreffende timestamp veld is. Ik weet niet of hier een betere oplossing voor is... Iemand?
Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz
Dus je doet iets met een TIMESTAMP?Op dinsdag 09 april 2002 14:10 schreef daniel_hoenderdos het volgende:
[..]
Ik heb het over de mysql type TIMESTAMP die je via de opdracht UNIX_TIMESTAMP naar een UNIX timestamp kunt omzetten.
Ik gebruik dat mysql type TIMESTAMP nooit, maar sla mijn timestamps altijd als UNIX Timestamp op door met time() te werken.
Snap je het nog?
Nee, maar ik kan je volgen
Meestal gebruik ik gewoon (net als hierboven door iemand gemeld) een INT(10). Als ik dan de tijd vanuit PHP invoer doe ik dat met de functie time() en vanuit SQL doe ik dat met de functie UNIX_TIMESTAMP(). Het type TIMESTAMP gebruik ik dus ook nooit.
Verwijderd
Jij zegt het iig een stuk duidelijker dan ik... Conclusie /me needs coffeeOp dinsdag 09 april 2002 14:47 schreef eborn het volgende:
[..]
Dus je doet iets met een TIMESTAMP?![]()
Nee, maar ik kan je volgen
Meestal gebruik ik gewoon (net als hierboven door iemand gemeld) een INT(10). Als ik dan de tijd vanuit PHP invoer doe ik dat met de functie time() en vanuit SQL doe ik dat met de functie UNIX_TIMESTAMP(). Het type TIMESTAMP gebruik ik dus ook nooit.
Even terug dan: Ik naak een agenda en ik wil een datum en tijd invoeren. Mijn invoer is in de vorm van een string. Hoe maak ik dan daar een tijd-string van zodat ik alle tijd-functies uit kan voeren?
gewoon opslaan in een dat kolom van MySQL. MySQL doet dan de conversie naar een datum.
Staat ook gewoon in de manual hoor:AWe:
Even terug dan: Ik naak een agenda en ik wil een datum en tijd invoeren. Mijn invoer is in de vorm van een string. Hoe maak ik dan daar een tijd-string van zodat ik alle tijd-functies uit kan voeren?
MySQL Docs / The DATETIME, DATE, and TIMESTAMP Types
You can specify DATETIME, DATE, and TIMESTAMP values using any of a common set of formats:
- As a string in either 'YYYY-MM-DD HH:MM:SS' or 'YY-MM-DD HH:MM:SS' format [..]
- As a string in either 'YYYY-MM-DD' or 'YY-MM-DD' format
- As a string with no delimiters in either 'YYYYMMDDHHMMSS' or 'YYMMDDHHMMSS' format
- etcetera...
Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz
Verwijderd
Is er eigenlijk een verschil tussen time() in php en de waarde die een TIMESTAMP column krijgt als je niets invult, uitgelezen met UNIX_TIMESTAMP()?
Theoretisch is dat toch hetzelfde (als ze op exact hetzelfde moment aangeroepen dan wel opgeslagen worden?)
[edit]
Ik kan onzin wauwelen, maar het voordeel van het door php laten genereren van de tijd ipv door mysql dmv TIMESTAMP, is dat je eerst nog met de tijd kan goochelen voordat je hem in de database zet.. ( time()+86400 bijvoorbeeld voor een dag bij de huidige tijd optellen oid)
Theoretisch is dat toch hetzelfde (als ze op exact hetzelfde moment aangeroepen dan wel opgeslagen worden?)
[edit]
Ik kan onzin wauwelen, maar het voordeel van het door php laten genereren van de tijd ipv door mysql dmv TIMESTAMP, is dat je eerst nog met de tijd kan goochelen voordat je hem in de database zet.. ( time()+86400 bijvoorbeeld voor een dag bij de huidige tijd optellen oid)
Pagina: 1