PDA

Volledige versie bekijken : [PHP MYSQL] Datum uit MySql lezen


Jordy
%Europe/Berlin %613 %2005, 15:43
He all,

Een deel van n script van mij stuurt de huidige tijd en datum naar een database, maar als ik dit wil uitlezen krijg ik het in de yyyy-mm-dd hh-mm-ss style te zien. Dat is best logisch. Alleen ik wil het in de hh-mm-ss dd-mm-yyyy te zien krijgen. Nu had ik gehoord van de UNIX timestamp, maar ik snap daar niet zoveel van.

Alvast bedankt :D

Dauntless
%Europe/Berlin %684 %2005, 17:25
Je kan dmv time() het aantal seconden sinds 1 januari 1970 meten. Dat aantal seconden kan je dan opslaan in je database. Om terug te gaan doe je bv date("d m y", $timestamp) waarbij $timestamp het aantal seconden is.
Een volledige lijst van mogelijkheden vind je hier (http://be.php.net/manual/en/function.date.php)

Jordy
%Europe/Berlin %691 %2005, 17:36
Tnx voor je reply maar ik heb het anders opgelost. Ik zal het even uitleggen.

In de database staan:

ID INT
TITEL Varchar
BERICHT Varchar
DATUM Date

DIt had ik eerst, ik moest dus de datum en tijd opslaan volgens deze opmaak: yyyy-mm-dd hh-mm-ss

Telkens als ik dus een bericht had geplaatst stond dit er:
<Hier een titel> @ 2005-6-29 15:00

Ik wilde het zo hebben:
<Hier een titel> @ 29-6-2005 15:00

Dat lukte mij niet daarom opende ik dit topic. Maar ik heb het toch maar anders opgelost dan wat Dauntless zei :$ ;)

Ik heb DATUM ook maar een Varchar gemaakt, en in mn script heb ik gewoon meteen de goede tijd opmaak gezet :).

MAKR
%Europe/Berlin %730 %2005, 18:32
Je kunt et ook zo doen: (als je alsnog DATETIME zou gebruiken in de database)



function datetime($fulldate) {
$dt = explode(" ",$fulldate);
$d = explode("-",$dt[0]);
$t = explode(":",$dt[1]);
return $d[2]."-".$d[1]."-".$d[0]." ".$t[1].":".$t[1];
}
echo("<Hier een titel> @ " . datetime(date('Y-m-d H:i:s'))); //voorbeeldje

latino
%Europe/Berlin %766 %2005, 19:23
waarom moeilijk doen? mysql heeft een prima manier ervoor.

sla alles op in een date of datetime veld

met DATE_FORMAT() kun je alle typen data weergeven die je wilt

Jordy
%Europe/Berlin %767 %2005, 19:25
oke dat wist ik nog niet :) iig bedankt,

MAKR
%Europe/Berlin %772 %2005, 19:31
waarom moeilijk doen? mysql heeft een prima manier ervoor.

sla alles op in een date of datetime veld

met DATE_FORMAT() kun je alle typen data weergeven die je wilt

Geef eens een voorbeeld?

Jordy
%Europe/Berlin %773 %2005, 19:33
Zou t nodig zijn om mijn manier aan te passen aan die van jou Latino ?

Folkert
%Europe/Berlin %788 %2005, 19:56
SELECT DATE_FORMAT(jeDatumVeldDate , '%d %m %Y')


zoiets kan bijvoorbeeld. lijst met mogelijkheden en afkortingen vind je hier (http://dev.mysql.com/doc/mysql/en/date-and-time-functions.html)

meester
%Europe/Berlin %455 %2005, 11:56
als je je tijd in mysql opslaat via timestamp > en als je deze oproept via flash, laat tie deze altijd omgekeerd zien, enige wat je dan zou mnoeten doen is >>

bij je query het volgende doen :

SELECT *, UNIX_TIMESTAMP(tijd) as tijd FROM <tabel>

hiermee draait tie de tiemstamp om, en kan je hem via PHP weer opvragen:
$tijd = date(d, m, Y, $record['tijd']);

$output .= "&tijd=" . urlencode($tijd);


ciaaaaaao hoop dat je er nog wat aan had

De Kale
%Europe/Berlin %724 %2005, 18:23
gebruik NOOIT een varchar voor een datum of tijd...
DATE, DATETIME of TIMESTAMP
en dan kun je alle datum functies gebruiken zoals die waar dauntless al naar linkte

Jordy
%Europe/Berlin %725 %2005, 18:24
@de kale, ik snap dat een varchar niet gemaakt is voor een datum. Maar hoezo moet je het nooit gebruiken ?

(ps. Ik ga dan toch maar weer een DATE of DATETIME of TIMESTAMP proberen te gebruiken :p)

Roenes
%Europe/Berlin %734 %2005, 18:37
Even de topic misbruiken:

Er worden hier een heleboel typen genoemd voor in de database. Ik ken velen van naam maar weet niet precies de verschillen hiertussen. Aangezien ik net kom kijken op het gebied van databases zou het handig zijn als iemand een link zou hebben met wat uitleg/verschillen tussen de meest gebruikte typen.

Heeft iemand die toevallig? :rolleyes:

Jordy
%Europe/Berlin %741 %2005, 18:47
Date: slaat een datum op in de indeling YYYY-MM-DD hh:mm:ss
Datetime: datum en tijd in de indeling YYYY-MM-DD hh:mm:ss
Timestamp: slaat een tijdstempel op, gemeten in de seconde die zijn verstreken sinds het begin van het UNIX tijdperk. Waardebereik van 1-1-1970 tot en met 31-12-2036
Time: tijd in het waardebereik an -838:59:59 tot en met +838:59:59 in de indeling hh:mm:ss

Dit heb ik overigens uit een php boek die ik heb liggen. Maar kan iemand mij een beetje opweg helpen met DATETIME? aangezien ik ipv YYYY-MM-DD DD-MM-YYYY wil :) :rolleyes:

mech7
%Europe/Berlin %791 %2005, 19:59
http://dev.mysql.com/doc/mysql/en/date-and-time-functions.html

Roenes
%Europe/Berlin %811 %2005, 20:28
Jordy dank voor de uitleg en via de link van mech7 kwam ik op deze link (http://dev.mysql.com/doc/mysql/en/column-types.html) met een overzicht van alle types en zo. Ik zal deze eens doorlezen vant weekend :)

Beide bedankt :)

designhulp.nl
%Europe/Berlin %002 %2005, 01:03
Ik heb over die kolommen en attributen in MySQL een tijd geleden een artikel geschreven, staat nu op
http://designhulp.nl/artikelen/server-side/php-mysql/mysql-kolomtypen

Misschien heb jij er ook wat aan ;)

__________________
designhulp.nl, voor de beginnende en gevorderde webdesigner en developer (http://designhulp.nl/forum/)

meester
%Europe/Berlin %443 %2005, 11:38
Jordy kijk dan naar mijn POST die ging als volgt :

als je je tijd in mysql opslaat via timestamp > en als je deze oproept via flash, laat tie deze altijd omgekeerd zien, enige wat je dan zou mnoeten doen is >>

bij je query het volgende doen :

SELECT *, UNIX_TIMESTAMP(tijd) as tijd FROM <tabel>

hiermee draait tie de tiemstamp om, en kan je hem via PHP weer opvragen:
$tijd = date(d, m, Y, $record['tijd']);

$output .= "&tijd=" . urlencode($tijd);

zo draai je je tijd dus om YY-mm--dd wordt dd--mm--YY <<<

Roenes
%Europe/Berlin %496 %2005, 12:54
Ik heb over die kolommen en attributen in MySQL een tijd geleden een artikel geschreven, staat nu op
http://designhulp.nl/artikelen/server-side/php-mysql/mysql-kolomtypen

Misschien heb jij er ook wat aan ;)Zo te zien wel :) Ik ga deze eerst doorlezen! Dank voor de link! :)

De Kale
%Europe/Berlin %601 %2005, 15:26
waarom gebruik je datum kolommen:
- dit is de standaard om datums (niet data) op te slaan.
- deze worden door de database geoptimaliseerd opgeslagen(bytes van een datatime zijn minder dan als je in een varchar dezelfde string zou opslaan, denk aan de bytes winst bij 10 miljoen entries in een database)
- deze worden door de database geoptimaliseerd uitgelezen (yyyy-mm-dd, in dit formaat weet je altijd direct welke datum eerst/laatst komt (sorting) bijv: 2005-01-02 komt voor 2005-02-01, maar 01-02-2005 komt niet voor 02-01-2005 ;) )
- datumtype kolommen kun je opmaken zoals je wilt, in mysql met DATE_FORMAT, en je kunt hele makkelijke bewerkingen doen met functies zoals DAY(), MONTH()
bijvoorbeeld: SELECT DATE_FORMAT(user_registration_datetime, '%d-%m-%Y') as regdatum FROM user WHERE MONTH(user_registration_datetime) = 2 (alle registratie datums in formaat dd-mm-yyyy van gebruikers die in february geregistreerd zijn, ongeacht het jaar

nou goed, nog meer redenen te noemen maar dit zijn de belangrijkste, niet twijfelen, doen! dit is allang uitgekauwd door mensen die er _echt_ goed over nagedacht hebben ;)

Jordy
%Europe/Berlin %721 %2005, 18:19
Oke tnx de Kale, als ik er niet uit kom, dan post ik t wel weer :D