[datum] Waarde lijkt ALTIJD kleiner

Pagina: 1
Acties:

  • BierPul
  • Registratie: Juni 2001
  • Laatst online: 15-09 07:50

BierPul

2 koffie graag

Topicstarter
De datum staat als volgt in de database

dd-mm-yyyy

Nu wil ik alles van vandaag en van de toekomst laten zien
hij geeft echter continu blanco als ik > meegeef :(
PHP:
1
2
3
4
5
6
7
8
<?
$vandaag = date("d-m-Y");
$datum =  "de waarde uit de array";

if($datum >= $vandaag) {
    echo("ja ik mag");
}
?>

Ik heb beiden waarden ook los geprint en de schrijf wijzen is beiden dd-mm-yyyy

Ik snal er helemaal geen kont meer van |:(

Ja man


  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 12-09 21:31

Janoz

Moderator Devschuur®

!litemod

Je kunt het beste data als data met elkaar vergelijken, en niet als strings.. In dit geval (zoals de code nu is dus) kun je beter met Timestamps werken. Maar als je gegevens uit de DB haalt, kun je beter in je SQL commando alvast die data check doen..

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • BierPul
  • Registratie: Juni 2001
  • Laatst online: 15-09 07:50

BierPul

2 koffie graag

Topicstarter
Hmmmz ik ga wel met SQL klooien dan :(

volgens mij gaat dit best wel kut worden :(

Het verotte is namelijk dat het een bestaande dbase is met enkele 10 duizenden records die zo zijn weggeschreven |:(

Ja man


  • mvdejong
  • Registratie: Juni 2000
  • Laatst online: 29-11-2024

mvdejong

When does the hurting stop ?

Als je data als strings gaat vergelijken, dan moet je het wel in een format "YYYY-MM-DD" of "YYYYMMDD" doen, want als string is "31-01-1900" toch echt groter dan "30-12-2000", en dat lijkt niet de bedoeling (strings vergelijken altijd met het eerste character als zwaarst tellend).

The number of things that Arthur couldn't believe he was seeing was fairly large


  • vinnux
  • Registratie: Maart 2001
  • Niet online
code:
1
 SELECT * FROM tablename WHERE TO_DAYS(NOW()) -TO_DAYS(dateField) <= 0

Misshien ivm met snelheid en deze query
PHP:
1
2
3
4
5
6
<?
 $dateToday = date('Ymd000000');

$query= "SELECT * FROM tablename WHERE dateField >= ". $dateToday;
 
?>

Ps werk alleen als je velden in MySql Timestamp velden zijn. Geloof ik.
Misschien toch maar eens een keer een tutorialtje over datums in MySql en Php ?

  • BierPul
  • Registratie: Juni 2001
  • Laatst online: 15-09 07:50

BierPul

2 koffie graag

Topicstarter
code:
1
SELECT id, titel, datum FROM tbl_events WHERE active= '0'  AND TO_DAYS(NOW()) -TO_DAYS(datum) >= 0

Geeft helaas geen effect :(

Ja man


  • vinnux
  • Registratie: Maart 2001
  • Niet online
>= MOET ZIJN <=

SORRY

Dit zal het beste werken
code:
1
SELECT id, titel, datum FROM tbl_events WHERE active= '0'  AND TO_DAYS(datum) >= TO_DAYS(NOW())

  • BierPul
  • Registratie: Juni 2001
  • Laatst online: 15-09 07:50

BierPul

2 koffie graag

Topicstarter
Helaas hij blijft de verouderede datum 25-01-2002 weergeven op mn scherm :(

Wat ik even niet begrijp is ofdat ik het ved varhar mag houden of dat ik die juist moet omzetten :?

Ja man


  • vinnux
  • Registratie: Maart 2001
  • Niet online
Op zondag 27 januari 2002 15:45 schreef LOST_GUNT het volgende:
Helaas hij blijft de verouderede datum 25-01-2002 weergeven op mn scherm :(

Wat ik even niet begrijp is ofdat ik het ved varhar mag houden of dat ik die juist moet omzetten :?
Nope je moet je datum opslaan als TIMESTAMP, DATE of DATETIME veld.


Voor het omzetten :

Maak een extra veld aand met DATE type naam datum1
Voer onderstaand script uit
PHP:
1
2
3
4
5
6
7
8
9
10
<?
 
$qry = "SELECT DISTINCT(datum) FROM tbl_events";
$res = mysql_query($qry);
while($row = mysql_fetch_array())
{
   $qry = "UPDATE tbl_events SET datum1 ='" .$row[0] ."'";
   $res1 = mysql_query($qry);
}
?>

Verwijder het veld datum.
Hernoem datum1 naar datum.
Klaar

Wel eesrt ff backuppen

SELECT id, titel, datum FROM tbl_events WHERE active= '0' AND TO_DAYS(datum) >= TO_DAYS(NOW())

  • BierPul
  • Registratie: Juni 2001
  • Laatst online: 15-09 07:50

BierPul

2 koffie graag

Topicstarter
hmmmmmzz de bestaande data stond al weggeschereven in een varchar veld

nu heb ik een testje gedaan met een varcahr veld daar de waarde

2002-01-25 ingeknald en die liet hij niet meer zien

het werkt dus :)

zal niet de meest efficiente mannier zijn maar toch het werkt :)

Ja man

Pagina: 1