Datum opslaan

Gestart doorWouter11 reacties39 weergaven

12 berichten · pagina 1 van 1

Wouter

Lid · Topicstarter

Berichten
3.540
Reputatie
0
Punten
0,01
Lid sinds
Laatst gezien
Hoi iedereen

Wat is nu de beste manier om datums op te slaan in een database?
Het is de bedoeling om daarna de datums uit te lezen als 2 juli 2013 12:38.

Ja, ik heb al gezocht op Google, maar ik wil jullie mening...

Wouter
0
Berichten
10.421
Reputatie
4
Punten
0,00
Lid sinds
Laatst gezien
DATETIME gebruiken, en in de SELECT kan je hem met DATE_FORMAT() je eigen gewenste formattering geven.
0
Berichten
6.201
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Datetime, denk ik..

Grrr.. Aarclay yummie
0
Berichten
35.796
Reputatie
1
Punten
0,00
Lid sinds
Laatst gezien
datetime als je de tijd erbij wil, en anders date.

Niets anders. thumbsup
toevoeging op 2 juli 2013, 12:43:21:
grr ajax en kjeld en aarclay
0
Berichten
10.421
Reputatie
4
Punten
0,00
Lid sinds
Laatst gezien
byebyebye naar Lennard en Kjeld yummie
0
Berichten
6.201
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Sorry dat ik even dit topic kaap, maar dit is dus eigenlijk ook niet de juiste manier dan?

SELECT *, UNIX_TIMESTAMP(datum) AS t_datum

[COLOR= #0000BB]<?[/COLOR] [URL="http://www.php.net/echo"]echo[/URL] [URL="http://www.php.net/date"]date[/URL][COLOR= #007700]([/COLOR][COLOR= #DD0000]d-m-Y H:i:s[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #0000BB]$list[/COLOR][COLOR= #007700][[/COLOR][COLOR= #DD0000]t_datum[/COLOR][COLOR= #007700]]);[/COLOR] ?>


Dat zou ik dan ook met die DATE_FORMAT() moeten doen?
0
Berichten
10.421
Reputatie
4
Punten
0,00
Lid sinds
Laatst gezien
date() raad ik af, deze kent geen locales, dus een Nederlandse formattering kan je er niet makkelijk uit krijgen. Strftime() kan dat weer wel.

Maar als je het uit de database haalt dan gebruik je DATE_FORMAT() in je query (het is GEEN PHP-functie)

Okee, maar MySQL praat standaard Engels met je. Dus ook February, May etc....
In dat geval voer je vooraf deze query uit in je script:

SET lc_time_names = nl_NL;


Vanaf dan heeft hij ook het Nederlandse inburgeringstraject gevolgd.
0
Wouter

Lid · Topicstarter

Berichten
3.540
Reputatie
0
Punten
0,01
Lid sinds
Laatst gezien
Oke, datetime is inderdaad handig, het is al gelukt om de datum er beter uit te halen.
Nu is code:

Codeblok (voorbeeld.php):

1
2
3

$database->query("SELECT *,DATE_FORMAT(datum,%d %M %Y %H:%i) as datum_weergave FROM nieuws ORDER BY datum DESC LIMIT 3");
?>

Maar waar voeg ik nu de SET lc_time_names = nl_NL; aan toe?

// Overigens krijg ik nu 02 July 2013 12:57
0
Berichten
6.201
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Aarclay schreef:
date() raad ik af, deze kent geen locales, dus een Nederlandse formattering kan je er niet makkelijk uit krijgen. Strftime() kan dat weer wel.

Maar als je het uit de database haalt dan gebruik je DATE_FORMAT() in je query (het is GEEN PHP-functie)

Okee, maar MySQL praat standaard Engels met je. Dus ook February, May etc....
In dat geval voer je vooraf deze query uit in je script:

SET lc_time_names = nl_NL;
Vanaf dan heeft hij ook het Nederlandse inburgeringstraject gevolgd.

In de huidige opzet (d-m-Y) is het niet nodig dat ik de Nederlandse namen gebruik, maar mocht ik het toch als bijvoorbeeld 2 juli 2013 willen weergeven is het natuurlijk bijna een verplichting om DATE_FORMAT() in mn query te gebruiken?

Ik bedoel, je raadt date() af, maar voor de huidige functionaliteit kan het toch best? (Ik bedoel, de functie is niet onveilig ofzo of wordt niet langer ondersteund..
0
Berichten
10.421
Reputatie
4
Punten
0,00
Lid sinds
Laatst gezien
date() kent de formattering niet die MySQLs DATETIME gebruikt.

DATETIME is anders dan de UNIX EPOCH-timestamp van date() (echo die maar eens wink )

toevoeging op 2 juli 2013, 13:05:23:
Wouter schreef:
Maar waar voeg ik nu de SET lc_time_names = nl_NL; aan toe?
In een losse query aan het begin van je site. Eenmalig uit te voeren.
Gedurende je hele connectie zal MySQL dit onthouden.
0
Berichten
6.485
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Aarclay schreef:
date() kent de formattering niet die MySQLs DATETIME gebruikt.

DATETIME is anders dan de UNIX EPOCH-timestamp van date() (echo die maar eens wink )
Natuurlijk kent date() wel degelijk formattering en kan je die net zoals bij mysql helemaal zelf bepalen. Performance technisch is de mysql functie waarschijnlijk beter.

Aan de andere kant is er iets voor te zeggen alle logica behalve berekeningen buiten je sql te hounden en daar een taal als PHP voor gebruiken. (daar is PHP immer voor bedoeld).

Ontopic: Ik sla tijden zoveel mogelijk in UNIX op. Ik werk(te) bij een bedrijf dat zon 3,5 miljoen datarijen (die bestonden uit tijd in milliseconde en waarde) per dag binnen kreeg. Dan is het server technisch uberhaubt niet mogelijk om een SQL server te gebruiken en kozen we dus voor een NoSQL server. Die kent de DATETIME e.d. niet.
0
Berichten
10.421
Reputatie
4
Punten
0,00
Lid sinds
Laatst gezien
Rogier schreef:
Eerdere citaten tonen
Aarclay schreef:
date() kent de formattering niet die MySQLs DATETIME gebruikt.
DATETIME is anders dan de UNIX EPOCH-timestamp van date() (echo die maar eens wink )

Natuurlijk kent date() wel degelijk formattering en kan je die net zoals bij mysql helemaal zelf bepalen. Performance technisch is de mysql functie waarschijnlijk beter.
eh... strftime kent wel locales. Voor date moet je geloof ik met arrays fratsen uithalen..
custom work dus...
0

Jouw reactie

Deel je idee, stel een vraag of help een ander verder.

Editor laden…

Praat mee met de One2xs-community.

Inloggen om te reageren