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

Kodeord


Reklame
Top 10 brugere
SQL
#NavnPoint
pmbruun 1704
niller 962
fehaar 730
Interkril.. 701
ellebye 510
pawel 510
rpje 405
pete 350
gibson 320
10  smorch 260
[MySQL] Dato problemer
Fra : Martin


Dato : 14-12-05 17:33

Hej gruppe

Jeg har et lille problem, jeg har en start dato, og en slutdato (begge
i DATETIME format i databasen)

Jeg har også en start og slutdato i PHP.

Jeg vil gerne finde alle de resultater der er imellem de 2 datoer i PHP,
men jeg kan bare ikke få resultatet.

Er der en der kan hjælpe mig?

 
 
Martin Christensen (14-12-2005)
Kommentar
Fra : Martin Christensen


Dato : 14-12-05 18:26

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Martin <maa@scandesigns.dk> writes:

> Jeg har et lille problem, jeg har en start dato, og en slutdato (begge
> i DATETIME format i databasen)
>
> Jeg har også en start og slutdato i PHP.
>
> Jeg vil gerne finde alle de resultater der er imellem de 2 datoer i
> PHP, men jeg kan bare ikke få resultatet.

Se, det er jo et ret enkelt problem, når man tænker over det.

SELECT bla FROM tabel
WHERE startdato > [startdato]
AND slutdato > [startdato]
AND startdato < [slutdato]
AND slutdato < [slutdato]

Så får du alle rækker, hvor start- og slutdatoerne ligger mellem de to
datoer, du har i PHP.

Hvis du går i stå med den slags problemer, hjælper det nogle gange at
lave en graf over nogle eksempeldata, så man kan forsøge at
visualisere, hvad man egentligt forsøger at lave. Blyant og papir er
stærkt undervurderede værktøjer nutildags.

Martin
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.1 (GNU/Linux)
Comment: Using Mailcrypt+GnuPG <http://www.gnupg.org>

iEYEARECAAYFAkOgVaYACgkQYu1fMmOQldUUgwCePQsJHEXCadXXimeij5auKJZU
4poAoIK3ZP2ZDtUVXqVmhkS+RAh0Oo7j
=wWzo
-----END PGP SIGNATURE-----

Martin (14-12-2005)
Kommentar
Fra : Martin


Dato : 14-12-05 21:05

Martin Christensen wrote:
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
>
> Martin <maa@scandesigns.dk> writes:
>
>> Jeg har et lille problem, jeg har en start dato, og en slutdato (begge
>> i DATETIME format i databasen)
>>
>> Jeg har også en start og slutdato i PHP.
>>
>> Jeg vil gerne finde alle de resultater der er imellem de 2 datoer i
>> PHP, men jeg kan bare ikke få resultatet.
>
> Se, det er jo et ret enkelt problem, når man tænker over det.
>
> SELECT bla FROM tabel
> WHERE startdato > [startdato]
> AND slutdato > [startdato]
> AND startdato < [slutdato]
> AND slutdato < [slutdato]

Nå tror bare jeg går fløjtende i seng iaften...

>
> Så får du alle rækker, hvor start- og slutdatoerne ligger mellem de to
> datoer, du har i PHP.
>
> Hvis du går i stå med den slags problemer, hjælper det nogle gange at
> lave en graf over nogle eksempeldata, så man kan forsøge at
> visualisere, hvad man egentligt forsøger at lave. Blyant og papir er
> stærkt undervurderede værktøjer nutildags.

Jeg havde skam både tegnet databasen og alle felter i hånden, men var
fuldstændig lost.

Havde kørt dokumentationen igennem 2 gange bare for at finde et eller
andet der lignede.

Men løsningen var tættere på min næsetip end min hjerne må man sige :)

Tak for hjælpen :)

>
> Martin

Flot navn iøvrigt :D

> -----BEGIN PGP SIGNATURE-----
> Version: GnuPG v1.4.1 (GNU/Linux)
> Comment: Using Mailcrypt+GnuPG <http://www.gnupg.org>
>
> iEYEARECAAYFAkOgVaYACgkQYu1fMmOQldUUgwCePQsJHEXCadXXimeij5auKJZU
> 4poAoIK3ZP2ZDtUVXqVmhkS+RAh0Oo7j
> =wWzo
> -----END PGP SIGNATURE-----

--
Martin

Kristian Damm Jensen (15-12-2005)
Kommentar
Fra : Kristian Damm Jensen


Dato : 15-12-05 11:23


Martin wrote:
> Hej gruppe
>
> Jeg har et lille problem, jeg har en start dato, og en slutdato (begge
> i DATETIME format i databasen)
>
> Jeg har også en start og slutdato i PHP.
>
> Jeg vil gerne finde alle de resultater der er imellem de 2 datoer i PHP,
> men jeg kan bare ikke få resultatet.
>
> Er der en der kan hjælpe mig?

Uklar problemformulering.

Vil du have overlappende tidsintervaller, eller skal det ene ligge helt
inde i det andet?

I første tilfælde kan du benytte

select *
from T
where startdata < [slutdato]
and [startdato] < slutdato

I andet tilfælde kan du benytte

select * from T
where startdato < [startdato]
and [slutdato] < slutdato

Nej, du behøver under ingen omstændigheder mere end to betingelser.

VH
Kristian


Martin Christensen (15-12-2005)
Kommentar
Fra : Martin Christensen


Dato : 15-12-05 12:09

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

"Kristian Damm Jensen" <kristiandamm@gmail.com> writes:

> Nej, du behøver under ingen omstændigheder mere end to betingelser.

Det kommer an på om det kan garanteres, at startdato <= slutdato. Hvis
det kan, har du naturligvis ret.

Martin
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.1 (GNU/Linux)
Comment: Using Mailcrypt+GnuPG <http://www.gnupg.org>

iEYEARECAAYFAkOhTr8ACgkQYu1fMmOQldUUvgCgt6qlFMJymhIptA+AUJhwqevp
o60Anj+/++LzbcFJCUsKxt5mDaYCLeYz
=cNgm
-----END PGP SIGNATURE-----

Martin Christensen (15-12-2005)
Kommentar
Fra : Martin Christensen


Dato : 15-12-05 13:56

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

"Kristian Damm Jensen" <kristiandamm@gmail.com> writes:

>> Det kommer an på om det kan garanteres, at startdato <= slutdato. Hvis
>> det kan, har du naturligvis ret.
>
> Naturligvis.
>
> Men i min verden er den slags en datafejl, som skal fanges inden man
> nærmer sig databasen.

Ja, men nu bruger han MySQL, så vi må hellere lade være med at tage
noget for givet. Har MySQL efterhånden fået CHECK constraints?

Martin
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.1 (GNU/Linux)
Comment: Using Mailcrypt+GnuPG <http://www.gnupg.org>

iEYEARECAAYFAkOhZ9UACgkQYu1fMmOQldWx6gCfRuEJHBC6mxab0Lt5CpL7TIn1
MQcAoMS6PZ5xStpzoKy4ET2cDEFVAFMK
=krU9
-----END PGP SIGNATURE-----

Kristian Damm Jensen (15-12-2005)
Kommentar
Fra : Kristian Damm Jensen


Dato : 15-12-05 13:48


Martin Christensen wrote:
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
>
> "Kristian Damm Jensen" <kristiandamm@gmail.com> writes:
>
> > Nej, du behøver under ingen omstændigheder mere end to betingelser.
>
> Det kommer an på om det kan garanteres, at startdato <= slutdato. Hvis
> det kan, har du naturligvis ret.

Naturligvis.

Men i min verden er den slags en datafejl, som skal fanges inden man
nærmer sig databasen.

VH
Kristian


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

Månedens bedste
Årets bedste
Sidste års bedste