Hallo,

Ik wil een datum en tijd of ene timestamp in mn db zetten, op dit moment gebruik ik gewoon iin INT(11) met daarin een timestamp, waarmee ik de cijfers om kan zetten naar een datum die door hte menselijk oog gelezen kan worden.
Maar ik weet dat ik het ook kan doen met DATE, TIME of zelfs DATETIME.
Nu wil ik graag weten waarom DATE, TIME of DATETIME beter is dan een INT(11), want ik weetb dus wel dat het beter is, en hoe ik van een DATETIME een ander formaat kan maken, bijvoorbeeld met een functie als date().

Greatzz,
Jonathan
Als je een DATETIME veld gebruikt kan je met al deze functies rekenen met datums, dat kan (volgens mij) met een INT() niet.

Verder zal een functie als ORDER BY ook beter werken als een veld van het juiste type is.
De datatypes die gemaakt zijn voor deze opslag hebben ten eerste het minst bytes nodig (INT11 is 11 bytes en dat is nogal heel erg veel, waarom niet gewoon INT4?).

Verder kun je de SQL functies gebruiken als DATE_FORMAT zodat je geen tussenkomst van PHP nodig hebt, wat sneller, efficiƫnter en makkelijker is.

Bedenk dat INT11 niet 11 karakters heeft maar 11 bytes, en dat zijn getallen ter grootte van 256^11
Boaz schreef op 22.07.2006 13:27
Als je een DATETIME veld gebruikt kan je met al deze functies rekenen met datums, dat kan (volgens mij) met een INT() niet.

Verder zal een functie als ORDER BY ook beter werken als een veld van het juiste type is.


DATETIME is van MySQL...

Dit is een betere link ;)
http://www.postgresql.org/docs/7.4/interactive/datatype.html
@Boaz, PHPerik:
Bedankt.

@Boaz:
Kan je mij laten zien hoe ik dan alle velden uit mijn tabel haal, de kolom met de DATETIME heet datum, en hoe kan ik dan een 'virtuele' kolom erbij maken met een datum als 22/7/06 13:30???
Snap je???
[edit]DIT IS MIJN 250e POST!!![/edit]
DATE_FORMAT(datum,'%d/%m/%Y') AS naam

Dat soort dingen staan dus allemaal in die link die ik gaf... kan je dus ook zelf even opzoeken.
@Boaz:
Ik ben 12, en kan weinig (lees: geen) engels. Dus zo:
SELECT DATE_FORMAT(datum,'%d/%m/&Y'), kolom2, kolom3 FROM tabelnaam WHERE tabelnaam = 'vergelijking' ORDER BY datum

???
Ja, die laatste & moet een % zijn, had ik ook fout gedaan.

En je kan de kolom eventueel een andere naam geven door er achter te zetten:
AS naam
dan is de kolom dus onder naam beschikbaar.

[edit]Er is ook wel wat nederlandstalige info beschikbaar, zo heeft Jan er ook al eens een tut over gemaakt:
http://www.phphulp.nl/php/tutorials/3/300/589/[/edit]
PHPerik schreef op 22.07.2006 13:27
De datatypes die gemaakt zijn voor deze opslag hebben ten eerste het minst bytes nodig (INT11 is 11 bytes en dat is nogal heel erg veel, waarom niet gewoon INT4?).

Verder kun je de SQL functies gebruiken als DATE_FORMAT zodat je geen tussenkomst van PHP nodig hebt, wat sneller, efficiƫnter en makkelijker is.

Bedenk dat INT11 niet 11 karakters heeft maar 11 bytes, en dat zijn getallen ter grootte van 256^11


Die 11 heeft niets temaken met de de maximale grote van het getal. INT gebruikt altijd 4 bytes.

http://dev.mysql.com/doc/refman/5.0/en/numeric-types.html

DATETIME gebruikt 8 bytes.

http://dev.mysql.com/doc/refman/5.0/en/storage-requirements.html

edit:

Dit is trouwens allemaal MySQL 5


En hoe kan ik in een DATETIME met een INSERT of UPDATE de 'nu' toevoegen???
Zo:
INSERT INTO tabelnaam VALUES ('voornaam', 'achternaam', NOW())
???
Dat is de makkelijkste manier ja...

Reageren