Hallo scripters,
Voor een applicatie van mij zoek ik de mogelijkheid om 2 timestamps te vergelijken.
Deze timestamps worden automatisch door mysql erin gezet en het format is als dit:
Wat ik wil doen is het volgende:Code:2010-06-10 10:19:21
dus ik wil kijken of een timestamp eerder was dan de vorige.PHP Code:
if($timestamp1 < $timestamp2){
//meer codes hier
}
hoe kan ik die doen?
Alvast bedankt!
Grt Ben
- PHP/MYSQL Timestamps vergelijken
-
10-06-2010, 13:37 #1Particulier
- Berichten
- 442
- Lid sinds
- 15 Jaar
PHP/MYSQL Timestamps vergelijken
-
In de schijnwerper
Website te koop uit 2004: Veluwe Vakantiewoning.Website te koopMooie domeinnamen met vraagprijs! London.nl, Hengelsport.nl, vazen.nl etcDomein te koopProfessionele tekstschrijver 2 cent per woord (geen AI)Freelance / WerkLinkbuilding(internationaal)uitbesteden(ook whitelabel)?Wij regelen alle plaatsingen.Freelance / Werk -
10-06-2010, 13:39 #2Particulier
- Berichten
- 126
- Lid sinds
- 14 Jaar
De code die je geplaatst hebt is correct om 2 timestamps te vergelijken.
-
10-06-2010, 13:50 #3Particulier
- Berichten
- 442
- Lid sinds
- 15 Jaar
dus ik zou het zo kunnen zetten?
PHP Code:$timestamp1 = "2010-06-10 10:19:21";
$timestamp2 = "2010-05-10 09:19:21";
if($timestamp2 < $timestamp1){
//hier codes
}
-
10-06-2010, 14:08 #4
- Berichten
- 87
- Lid sinds
- 15 Jaar
Hieronder een functie die het aantal seconden vanaf 1 januari 1970 berekent. hiermee kan je dus goed vergelijken
PHP Code:<?php
function TS2S($timestamp){
$split= explode(" ", $timestamp);
$dateSplit= explode("-", $split[0]);
$timeSplit= explode(":", $split[1]);
$seconds= 0;
$seconds= $seconds+$timeSplit[2];
$seconds= $seconds+$timeSplit[1]*60;
$seconds= $seconds+$timeSplit[0]*3600;
$seconds= $seconds+$dateSplit[2]*86400;
$years= $dateSplit[0]-1970;
$yearDays= 0.75*365+0.25*366;
$seconds= $seconds+$yearDays*86400;
$monthArray= array("31", "28", "31", "30", "31", "30", "31", "31", "30", "31", "30", "31", "30");
$days= 0;
for($i=1;$i<=($dateSplit[1]-1);$i++){
if($i==2){
if(is_int($dateSplit[0]/4)){
$days= $days+ 29;
}
else {
$days= $days+ 28;
}
}
else {
$key= $i-1;
$days= $days+$monthArray[$key];
}
}
$seconds= $seconds+$days*86400;
return $seconds;
}
$timestamp1 = "2010-06-10 10:19:21";
$timestamp2 = "2010-05-10 09:19:21";
if(TS2S($timestamp1) < TS2S($timestamp2)){
//
}
?>
-
10-06-2010, 14:37 #5
- Berichten
- 264
- Lid sinds
- 17 Jaar
met date("U") in combinatie met mktime(); kan je Unix tijdstippen vergelijken.
http://php.net/manual/en/function.mktime.php
-
10-06-2010, 15:02 #6Particulier
- Berichten
- 126
- Lid sinds
- 14 Jaar
@Ben,
De functie van Jelle zal vast kloppen (niet gecontroleerd), maar jouw voorbeeld van aanpak werkt ook prima.
-
10-06-2010, 16:23 #7
- Berichten
- 330
- Lid sinds
- 17 Jaar
Wanneer je in de database een DATETIME veld hebt dan kan je simpelweg in je select de UNIX_TIMESTAMP() functie gebruiken.
Dus:
PHP Code:SELECT
UNIX_TIMESTAMP(datum) AS unixtijd
FROM
blabla
-
11-06-2010, 05:15 #8Particulier
- Berichten
- 442
- Lid sinds
- 15 Jaar
heel erg bedankt iedereen, ik heb nu nog een vraagje over de timestamps.
Wat ik nu precies wilt doen is het volgende, in mijn database staan bijvoorbeeld 5 records in table member
en deze hebben allemaal verschillende timestamps erin staan met datum en tijd waarop ze geregistreerd zijn, en in een andere table news_history staat een record met timestamp (zelfde format) nu wil ik de timestamp uit news_history (1 record) vergelijken met alle records uit member of de timestamp eerder of later is dan de timestamp uit news_history zoja, update een bepaalde column van al die records.
hoe moet de code er dan ongeveer uit zien?
ik hoop dat ik het duidelijk genoeg hebt op geschreven.
-
11-06-2010, 09:34 #9
- Berichten
- 330
- Lid sinds
- 17 Jaar
Zoiets?
PHP Code:
SELECT
m.id
FROM
member AS m
WHERE
UNIX_TIMESTAMP(m.datum) > (
SELECT
UNIX_TIMESTAMP(n.datum)
FROM
news_history AS n
LIMIT 1
)
-
11-06-2010, 10:36 #10Particulier
- Berichten
- 442
- Lid sinds
- 15 Jaar
Ga ik proberen! bedank arjen
-
11-06-2010, 10:43 #11Particulier
- Berichten
- 155
- Lid sinds
- 17 Jaar
kom ik dus laatst een spaanse vriend van me, manual, tegen en ik vraag hem dus in mijn beste engels:
'do you know the answer to life, the universe and everything?'
hij antwoordde daarop:
"the answer to life the universe and everything is strtotime()"
-
11-06-2010, 10:50 #12
- Berichten
- 95
- Lid sinds
- 18 Jaar
@Martijn: Wat als hij geen Engels verstaat?
Dus voor het geval dat je geen Engels verstaat. Martijn heeft z'n vriend Manual gevraagd, die zegt dat je strtotime moet gebruiken.
Manual heeft ook een eigen stukje op PHP.net, namelijjk php.net/Manual
@Jelle, wtf?
-
11-06-2010, 10:53 #13Particulier
- Berichten
- 155
- Lid sinds
- 17 Jaar
Maar inderdaad, dat is Manual's blog, daar zet hij vaak stukjes op die relevant zijn voor PHP. Schrijft vaak best goede collumns!
-
11-06-2010, 11:09 #14
- Berichten
- 330
- Lid sinds
- 17 Jaar
Het is vele malen eenvoudiger en sneller om dit soort bewerkingen en vergelijkingen af te handelen met mysql. Je kan als het goed is, in het geval van datetime veld, de unix_timestamp functie ook achterwege laten aangezien mysql de vergelijking ook met normale data kan voltooien.
-
11-06-2010, 11:33 #15Particulier
- Berichten
- 155
- Lid sinds
- 17 Jaar
Het is vele malen eenvoudiger en sneller om dit soort bewerkingen en vergelijkingen af te handelen met mysql. Je kan als het goed is, in het geval van datetime veld, de unix_timestamp functie ook achterwege laten aangezien mysql de vergelijking ook met normale data kan voltooien.
Daarnaast zal er een gedachte achter zitten waardoor hij de data opslaat als date en niet als int (unixtime), dan zal er vast ook een reden zijn dat hij deze niet ophaalt als int (unixtime).
ik zeg niet dat je oplossing niet zou werken, het is alleen geen antwoord op de vraag die gesteld is.
Plaats een
- + Advertentie
- + Onderwerp
Marktplaats
Webmasterforum
- Websites algemeen
- Sitechecks
- Marketing
- Domeinen algemeen
- Waardebepaling
- CMS
- Wordpress
- Joomla
- Magento
- Google algemeen
- SEO
- Analytics
- Adsense
- Adwords
- HTML / XHTML
- CSS
- Programmeren
- PHP
- Javascript
- JQuery
- MySQL
- Ondernemen algemeen
- Belastingen
- Juridisch
- Grafisch ontwerp
- Hosting Algemeen
- Hardware Info
- Offtopic