Nieus van vandaag
Beste,
Ik heb in mijn MYSQL tabel allemaal nieuwsitems staan.
Nu wil ik het nieuws dat vandaag is toegevoegd laten zien aan de leden in een mooie tabel, ik hebt de nieuwsdatum met time()-functie toegevoegd.
dus tabel ziet er zo uit:
id, titel, nieuws, datum
Bedankt
Ik heb in mijn MYSQL tabel allemaal nieuwsitems staan.
Nu wil ik het nieuws dat vandaag is toegevoegd laten zien aan de leden in een mooie tabel, ik hebt de nieuwsdatum met time()-functie toegevoegd.
dus tabel ziet er zo uit:
id, titel, nieuws, datum
Bedankt
Code (php)
1
$qNieuws = mysql_query("SELECT id, titel,nieuws,datum FROM nieuwsitems WHERE DATE(datum) = '".DATE(NOW())."'");
Gewijzigd op 28/12/2010 13:41:03 door Dindong Veter
Paul L op 28/12/2010 13:31:57:
Dat laat hij alle nieuws zien, die ook van gisteren
oja, erover heen gelezen aha, zal zo even aanpassen
Staat die tijd in unix seconden (INT) of in dateTime?
Kris Peeters op 28/12/2010 13:36:55:
Staat die tijd in unix seconden (INT) of in dateTime?
int(10)
Ja, dan zou je al in php moeten berekenen wat de begin- en eindseconde is van de dag en dat in de sql string steken.
Dat lukt wel hoor, daar niet van.
Maar lees toch dit eens; je zal zien dat dit toch meer mogelijkheden biedt.
http://www.phphulp.nl/php/tutorial/overig/datum-en-tijdfuncties-in-mysql/519/
Zo-iets zou wel moeten werken ... maar het kan wat properder/eleganter
Dat lukt wel hoor, daar niet van.
Maar lees toch dit eens; je zal zien dat dit toch meer mogelijkheden biedt.
http://www.phphulp.nl/php/tutorial/overig/datum-en-tijdfuncties-in-mysql/519/
Zo-iets zou wel moeten werken ... maar het kan wat properder/eleganter
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php
$now = time();
$eerste_seconde_vandaag = mktime(
0,
0,
0,
date('n', $now),
date('j', $now),
date('Y', $now)
);
$laatste_seconde_vandaag = mktime(
0,
0,
-1,
date('n', $now),
date('j', $now) + 1,
date('Y', $now)
);
$sql = "SELECT id, titel,nieuws,datum FROM nieuwsitems WHERE datum >= ". $eerste_seconde_vandaag ." AND datum <= ". $laatste_seconde_vandaag;
?>
$now = time();
$eerste_seconde_vandaag = mktime(
0,
0,
0,
date('n', $now),
date('j', $now),
date('Y', $now)
);
$laatste_seconde_vandaag = mktime(
0,
0,
-1,
date('n', $now),
date('j', $now) + 1,
date('Y', $now)
);
$sql = "SELECT id, titel,nieuws,datum FROM nieuwsitems WHERE datum >= ". $eerste_seconde_vandaag ." AND datum <= ". $laatste_seconde_vandaag;
?>
Gewijzigd op 28/12/2010 14:21:03 door Kris Peeters
Misschien een beetje SPAM van me (als modjes het echt niet lief vinden, dan hoor ik dat graag) maar toevallig heb ik gisteren nog iets geschreven over datum datatypes in MySQL en waarom je dus datums niet als INT moet opslaan, misschien heb je er wat aan:
http://www.keesschepers.nl/2010/12/27/mysql-datatypes-kiezen/
http://www.keesschepers.nl/2010/12/27/mysql-datatypes-kiezen/
Nochtans hebben die unix seconden wel 1 voordeel: zo'n tijd geeft je een unieke tijd.
Een tijd die je achteraf altijd weer kan reconstrueren.
Als je bij een gepost bericht een datetime zet, moet je ook altijd een tijdszone toevoegen om de tijd uniek te maken.
Maar ik zal je document zeker eens op mijn gemak lezen.
Een tijd die je achteraf altijd weer kan reconstrueren.
Als je bij een gepost bericht een datetime zet, moet je ook altijd een tijdszone toevoegen om de tijd uniek te maken.
Maar ik zal je document zeker eens op mijn gemak lezen.
Maar je kunt in MySQL ook datums als Timestamp opslaan he, zie mijn artikel. Alleen je voegt een datum niet meer toe als integer, maar als NOW() bijvoorbeeld of '2010-05-01 16:20' bijvoorbeeld.
Stel je hebt dus een "insertdate" veld in je tabel met datatype "TIMESTAMP" in MySQL dan kun je een datum toekennen aan dit veld op de volgende manier:
Ondanks je de datums op deze manier opslaat kun je toch de timestamp in unix formaat opvragen van dit veld:
Het geselecteerde veld in timestamp zal dan iets 93443512 terug geven.
Stel je hebt dus een "insertdate" veld in je tabel met datatype "TIMESTAMP" in MySQL dan kun je een datum toekennen aan dit veld op de volgende manier:
Code (php)
1
2
3
4
5
2
3
4
5
<?php
$sql = 'INSERT INTO tabel SET insertdate = NOW()';
//of
$sql = 'INSERT INTO tabel SET insertdate = "2010-05-01 16:20"';
?>
$sql = 'INSERT INTO tabel SET insertdate = NOW()';
//of
$sql = 'INSERT INTO tabel SET insertdate = "2010-05-01 16:20"';
?>
Ondanks je de datums op deze manier opslaat kun je toch de timestamp in unix formaat opvragen van dit veld:
Het geselecteerde veld in timestamp zal dan iets 93443512 terug geven.
Ah ja; timestamp wordt intern als unix seconden opgeslagen. Ja, dan heeft dat niets dan voordelen.
EDIT:
Zeg, hoe zit dat dan als je een sql export doet?
EDIT:
Zeg, hoe zit dat dan als je een sql export doet?
Gewijzigd op 28/12/2010 15:21:39 door Kris Peeters
Dan exporteert hij de datum in YYYY-MM-DD HH:II notatie ;-)
Ja, okay, dan ben je die unix seconden (intern of niet) en de tijdszone dus weer kwijt.




