/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
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 :)

Søg
Reklame
Statistik
Spørgsmål : 177559
Tips : 31968
Nyheder : 719565
Indlæg : 6408938
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste