|  | 		    
					
        
         
          
         
	
          | |  | Sammenligne datoer Fra : Nederbasse
 | 
 Dato :  15-06-06 11:28
 | 
 |  | Jeg har problemer med at får vist dato i DK format fra en Mysql db og
 samtidig kun få vist de rows hvor datoen er fra i dag eller nyerer
 Datoen i dag:
 $idag = date("Y-m-d");
 
 
 Min select:
 SELECT id, date_format(laan_fra, '%d-%m-%Y') as dk_laan_fra,
 date_format(laan_til, '%d-%m-%Y') as dk_laan_til, bem, laan FROM udlaan
 WHERE laan = 'Sony' OR laan = 'Nikon' AND laan_til >= '$idag'
 
 Hvis jeg echo'er $idag bliver den skrevet som 2006-06-15 altså samme format
 som i databasen alligevel bliver datoer før dd. vist
 
 Datoen på siden bliver cist som 15-06-2006 når jeg bruger denne select
 
 Hvordan får jeg kun ny datoer ?
 
 Lars N
 
 
 
 
 |  |  | 
  JD (15-06-2006) 
 
	
          | |  | Kommentar Fra : JD
 | 
 Dato :  15-06-06 12:28
 | 
 |  | > Min select:
 > SELECT id, date_format(laan_fra, '%d-%m-%Y') as dk_laan_fra,
 > date_format(laan_til, '%d-%m-%Y') as dk_laan_til, bem, laan FROM udlaan
 > WHERE laan = 'Sony' OR laan = 'Nikon' AND laan_til >= '$idag'
 
 Hvilken type er laan_til?
 
 Udskift $idag med NOW():
 
 SELECT id, date_format(laan_fra, '%d-%m-%Y') as dk_laan_fra,
 date_format(laan_til, '%d-%m-%Y') as dk_laan_til, bem, laan FROM udlaan
 WHERE laan = 'Sony' OR laan = 'Nikon' AND laan_til >= DATE(NOW())
 
 Når det er sagt, er DK format så ikke dd/mm-yyyy? Personligt vælger jeg
 altid yyyy-mm-dd, da den er sorterings venlig.
 
 
 
 
 |  |  | 
  Bertel Lund Hansen (15-06-2006) 
 
	
          | |  | Kommentar Fra : Bertel Lund Hansen
 | 
 Dato :  15-06-06 13:16
 | 
 |  | 
 
            JD skrev:
 > Når det er sagt, er DK format så ikke dd/mm-yyyy?
 Det har jeg lært for en generation siden, men man ser andre
 formater i dag, f.eks. dd.mm.yyyy.
 > Personligt vælger jeg 
 > altid yyyy-mm-dd, da den er sorterings venlig.
 Det er også en dansk standard (faktisk en ISO-standard), og der
 er firmaer der bruger den i hele koncernen.
 -- 
 Bertel
http://bertel.lundhansen.dk/      http://fiduso.dk/ |  |  | 
  Nederbasse (15-06-2006) 
 
	
          | |  | Kommentar Fra : Nederbasse
 | 
 Dato :  15-06-06 13:56
 | 
 |  | 
 "JD" <jonh@doe.xyz> skrev i en meddelelse news:e6rg0p$rgc$1@nntp.aioe.org...
 > > Min select:
 > > SELECT id, date_format(laan_fra, '%d-%m-%Y') as dk_laan_fra,
 > > date_format(laan_til, '%d-%m-%Y') as dk_laan_til, bem, laan FROM udlaan
 > > WHERE laan = 'Sony' OR laan = 'Nikon' AND laan_til >= '$idag'
 >
 > Hvilken type er laan_til?
 >
 > Udskift $idag med NOW():
 >
 Datoen 20-01-2006 vises stadig med DATA(NOW))
 laan_til og laan_fra er af typen date
 
 Lars N
 
 
 
 
 |  |  | 
   JD (15-06-2006) 
 
	
          | |  | Kommentar Fra : JD
 | 
 Dato :  15-06-06 17:48
 | 
 |  | >> > Min select:
 >> > SELECT id, date_format(laan_fra, '%d-%m-%Y') as dk_laan_fra,
 >> > date_format(laan_til, '%d-%m-%Y') as dk_laan_til, bem, laan FROM udlaan
 >> > WHERE laan = 'Sony' OR laan = 'Nikon' AND laan_til >= '$idag'
 >>
 >> Hvilken type er laan_til?
 >> Udskift $idag med NOW():
 >>
 > Datoen 20-01-2006 vises stadig med DATA(NOW))
 > laan_til og laan_fra er af typen date
 
 Det giver ingen mening med mindre uret på din server går forkert eller
 indholdet af laan_til på anden vis er forkert?
 
 Hvad siger en "SELECT laan_til FROM udlaan WHERE laan_til>=NOW()" ?
 
 
 
 
 |  |  | 
    Martin (15-06-2006) 
 
	
          | |  | Kommentar Fra : Martin
 | 
 Dato :  15-06-06 20:14
 | 
 |  | JD wrote:
 > Hvad siger en "SELECT laan_til FROM udlaan WHERE laan_til>=NOW()" ?
 
 Prøv med CUR_DATE() istedet for NOW()
 NOW() returner også tidspunktet, og efter et par tests, så virker det
 bedst med CUR_DATE() istedet.
 
 CUR_DATE() til date felter
 og NOW() til datetime felter
 det er sådan set hvad jeg har oplevet.
 
 
 |  |  | 
    Nederbasse (16-06-2006) 
 
	
          | |  | Kommentar Fra : Nederbasse
 | 
 Dato :  16-06-06 09:49
 | 
 |  | 
 >
 > Hvad siger en "SELECT laan_til FROM udlaan WHERE laan_til>=NOW()" ?
 >
 Bruger jeg denne  select vises der intet
 
 Her er et udsnit fra tabellen udlaan:
 laan_fra    laan_til        laan
 ---------------------------------------------
 2006-05-20 2006-05-21 Sony
 2006-05-20 2006-05-21 Nikon
 2006-06-25 2006-06-30 Sony
 2006-06-25 2006-06-30 Nikon
 2006-06-10 2006-06-11 cykel 1
 2006-06-14 2006-06-15 cykel 2
 2006-06-14 2006-06-15 Pc1
 2006-06-18 2006-06-22 Pc2
 2006-06-26 2030-06-20 Optoma
 
 
 
 
 |  |  | 
     JD (16-06-2006) 
 
	
          | |  | Kommentar Fra : JD
 | 
 Dato :  16-06-06 11:26
 | 
 |  | >> Hvad siger en "SELECT laan_til FROM udlaan WHERE laan_til>=NOW()" ?
 >>
 > Bruger jeg denne  select vises der intet
 >
 > Her er et udsnit fra tabellen udlaan:
 > laan_fra    laan_til        laan
 > ---------------------------------------------
 > 2006-05-20 2006-05-21 Sony
 > 2006-05-20 2006-05-21 Nikon
 > 2006-06-25 2006-06-30 Sony
 > 2006-06-25 2006-06-30 Nikon
 > 2006-06-10 2006-06-11 cykel 1
 > 2006-06-14 2006-06-15 cykel 2
 > 2006-06-14 2006-06-15 Pc1
 > 2006-06-18 2006-06-22 Pc2
 > 2006-06-26 2030-06-20 Optoma
 
 Så må du jo debugge lidt og lave din query så simpel som overhovedet mulig
 og så bygge på efterhånden.
 Hvis du laver en:
 
 "SELECT laan_til, CURDATE() FROM udlaan"
 
 Har du et unikt felt i tabellen - f.eks. en unsigned auto increment integer
 eller lignende? Jeg vil altid anbefale sådan et felt, da man bør kunne
 identificere en given række ud fra sådan et unikt ID og den er også god at
 have i tilfælde af debug.
 
 id, laan_til, laan
 -----------------------------------
 1 2006-05-21 Sony
 2 2006-05-21 Nikon
 3 2006-06-30 Sony
 4 2006-06-30 Nikon
 5 2006-06-11 cykel 1
 6 2006-06-15 cykel 2
 7 2006-06-15 Pc1
 8 2006-06-22 Pc2
 9 2030-06-20 Optoma
 
 
 
 
 |  |  | 
      Nederbasse (16-06-2006) 
 
	
          | |  | Kommentar Fra : Nederbasse
 | 
 Dato :  16-06-06 13:27
 | 
 |  | 
 "JD" <jonh@doe.xyz> skrev i en meddelelse
 news:44928722$0$60783$157c6196@dreader1.cybercity.dk...
 > >> Hvad siger en "SELECT laan_til FROM udlaan WHERE laan_til>=NOW()" ?
 > >>
 > >
 Med denne
 SELECT laan_til, CURDATE() FROM udlaan WHERE laan ='Sony'
 vises der 1 lån på siden med dagens dato
 datoformatet er 2006-07-16
 Jeg ved godt det kan være lige meget hvilket format datoer har men nu er det
 blevet en princip sag    Lars
            
             |  |  | 
       JD (16-06-2006) 
 
	
          | |  | Kommentar Fra : JD
 | 
 Dato :  16-06-06 13:41
 | 
 |  | 
 
            >> >> Hvad siger en "SELECT laan_til FROM udlaan WHERE laan_til>=NOW()" ?
 >> >>
 > SELECT laan_til, CURDATE() FROM udlaan WHERE laan ='Sony'
 > vises der 1 lån på siden med dagens dato
 > datoformatet er 2006-07-16
 Du mener vel 2006-06-16? Men er det så korrekt eller ej? I.flg. din 
 tidligere tabel er der to rækker med "Sony". Enten fortæller du kun 
 halvdelen af sandheden eller også er din MySQL server helt hen i skoven.
 > Jeg ved godt det kan være lige meget hvilket format datoer har men nu er 
 > det
 > blevet en princip sag    Du snakker sort    I ovenstående eksempel viser den bare standard MySQL 
 formatet, yyyy-mm-dd, og det er fuldstændigt underordnet. Jeg synes ikke du 
 skal koncentrere dig om dét lige p.t. da du altid kan ændre formatet, når du 
 en gang får de rigtige rækker ud af databasen.
 Hvad med det unikke ID felt - har du sådan ét?
            
             |  |  | 
        Nederbasse (16-06-2006) 
 
	
          | |  | Kommentar Fra : Nederbasse
 | 
 Dato :  16-06-06 21:44
 | 
 |  | 
 -- 
 <LarsN />
www.neder.dk "JD" <jonh@doe.xyz> skrev i en meddelelse 
 news:4492a6d6$0$60779$157c6196@dreader1.cybercity.dk...
 >>> >> Hvad siger en "SELECT laan_til FROM udlaan WHERE laan_til>=NOW()" ?
 >>> >>
 >> SELECT laan_til, CURDATE() FROM udlaan WHERE laan ='Sony'
 >> vises der 1 lån på siden med dagens dato
 >> datoformatet er 2006-07-16
 >
 > Du mener vel 2006-06-16? Men er det så korrekt eller ej? I.flg. din 
 > tidligere tabel er der to rækker med "Sony". Enten fortæller du kun 
 > halvdelen af sandheden eller også er din MySQL server helt hen i skoven.
 >
 >> Jeg ved godt det kan være lige meget hvilket format datoer har men nu er 
 >> det
 >> blevet en princip sag    >
 > Du snakker sort    I ovenstående eksempel viser den bare standard MySQL 
 > formatet, yyyy-mm-dd, og det er fuldstændigt underordnet. Jeg synes ikke 
 > du skal koncentrere dig om dét lige p.t. da du altid kan ændre formatet, 
 > når du en gang får de rigtige rækker ud af databasen.
 > Hvad med det unikke ID felt - har du sådan ét?
 >
 >
 Tabeller er tømt så der kun er de 'rigtige' datoer i den
 Mysql standard format har altid virket men jeg vil gernne have dato format 
 til at være dd-mm-yyyy
 Systemet har været lavet i asp indtil vores win server gik i sort, jeg ved 
 hvad brugerne kan finde på at skrive som dato så derfor vil jeg gerne det 
 var i dd-mm-yyyy format.
 mit ID er INT Autoincrement
 Lars 
            
             |  |  | 
         Martin (17-06-2006) 
 
	
          | |  | Kommentar Fra : Martin
 | 
 Dato :  17-06-06 01:33
 | 
 |  | 
 
            Nederbasse wrote:
 > Tabeller er tømt så der kun er de 'rigtige' datoer i den
 > Mysql standard format har altid virket men jeg vil gernne have dato format 
 > til at være dd-mm-yyyy
 > Systemet har været lavet i asp indtil vores win server gik i sort, jeg ved 
 > hvad brugerne kan finde på at skrive som dato så derfor vil jeg gerne det 
 > var i dd-mm-yyyy format.
 > mit ID er INT Autoincrement
 Et godt sted at starte er at kigge i dokumentationen.
 Jeg vil give dig et lille hint DATE_FORMAT()
 Eller hvis du vil lave datoen via PHP/ASP's tidsfunktioner så skal du 
 kigge på UNIX_TIMESTAMP()
 > Med denne
 > SELECT laan_til, CURDATE() FROM udlaan WHERE laan ='Sony'
 > vises der 1 lån på siden med dagens dato
 Har du kun 1 post i din database hvor laan = sony?
 SELECT
    DATE_FORMAT('laan_til','%d-%m-%Y') AS laandato
 FROM
    udlaan
 WHERE
    laan = 'Sony'
    AND
    laan_til <= CUR_DATE()
 Dette vil udskrive dd-mm-yyyy i variablen laandato,
 hvor laan = 'Sony' og laan_til er MINDRE end dagsdato.
 PS: Endnu et hint
 <www.mysql.com/doc> Den er nu rar at have i hånden :)
            
             |  |  | 
 |  |