/ 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
Find oprettede inden for x antal dage?
Fra : Martin Ploug


Dato : 30-05-08 16:29

Hej

Hvordan kan man lave en SQL-forespørgsel, der
finder records, som er oprettet inden f.eks. de
seneste 3 måneder?
Skal man bruge noget med SELECT * WHERE <= dags dato og så
noget med f.eks. 90 dage baglæns?

Jeg kan ikke lige regne den ud.
Nogen, der kan hjælpe?

På forhånd tak.



--
Med venlig hilsen

Martin Ploug
Skejbytoften 107 3. th.
8200 Århus N

Tlf. 8628 9969
Mobil: 2284 1057

E-mail: mploug@pc.dk
Web: http://www.musiklokaler.dk


 
 
Gert Krabsen (30-05-2008)
Kommentar
Fra : Gert Krabsen


Dato : 30-05-08 16:59

Martin Ploug skrev:
> Hej
>
> Hvordan kan man lave en SQL-forespørgsel, der
> finder records, som er oprettet inden f.eks. de
> seneste 3 måneder?
> Skal man bruge noget med SELECT * WHERE <= dags dato og så
> noget med f.eks. 90 dage baglæns?
>
> Jeg kan ikke lige regne den ud.
> Nogen, der kan hjælpe?
>

Det kan du selv


Ved at fortælle:

- hvilken database vi har fat i - de behandler ikke altid
datofelter ens
- hvordan du har registreret oprettelsesdagen - felttype?


mvh
Krabsen



Martin Ploug (30-05-2008)
Kommentar
Fra : Martin Ploug


Dato : 30-05-08 17:19

> Ved at fortælle:
>
> - hvilken database vi har fat i - de behandler ikke altid
> datofelter ens
> - hvordan du har registreret oprettelsesdagen - felttype?

Det er MySql, hvis det er det du tænker på?
Feltnavnrettet
Datatype: datetime
Format: 0000-00-00 00:00:00 (år, måned, dag - timer, minutter, sekuner)
Jeg er ikke interesseret i at få klokkeslet ud med mindre det er nødvendigt
i forhold til den pågældende forespørgsel.

/Martin


Martin (30-05-2008)
Kommentar
Fra : Martin


Dato : 30-05-08 19:09

Martin Ploug wrote:
>> Ved at fortælle:
>>
>> - hvilken database vi har fat i - de behandler ikke altid
>> datofelter ens
>> - hvordan du har registreret oprettelsesdagen - felttype?
>
> Det er MySql, hvis det er det du tænker på?
> Feltnavnrettet
> Datatype: datetime
> Format: 0000-00-00 00:00:00 (år, måned, dag - timer, minutter, sekuner)
> Jeg er ikke interesseret i at få klokkeslet ud med mindre det er nødvendigt
> i forhold til den pågældende forespørgsel.

SELECT * FROM tabel
WHERE felt > DATE_ADD(NOW(), INTERVAL 1 DAYS)

<http://dev.mysql.com/doc/refman/5.0/en/date-and-time-functions.html>
Er altid et godt sted at kigge når man skal lege med dato funktioner i mysql

Martin Ploug (30-05-2008)
Kommentar
Fra : Martin Ploug


Dato : 30-05-08 19:45

> SELECT * FROM tabel
> WHERE felt > DATE_ADD(NOW(), INTERVAL 1 DAYS)
>
> <http://dev.mysql.com/doc/refman/5.0/en/date-and-time-functions.html>
> Er altid et godt sted at kigge når man skal lege med dato funktioner i
> mysql

Hej

Kræver DATE_ADD ikke, at jeg kender de eksakte datoer?

Jeg har kigget på
http://dev.mysql.com/doc/refman/5.0/en/date-and-time-functions.html#function_date-add

men jeg tror ikke jeg helt forstår, hvordan man bruger DATE_ADD og INTERVAL.

Altså med DATE_ADD kan man indsætte to datoer?
Hvad så, hvis de to datoer er dynamiske (se nedenstående) ?
Hvad gør INTERVAL?

Jeg ønsker at finde records, som er oprettet inden for 3 måneder
(eller f.eks. 90 dage) fra dags dato.

Dags dato skal ikke være en fast bestemt dato, men den dato det
er den pågældende dag man vælger at køre forespørgslen
Datoen tre måneder tilbage er heller ikke en fast bestemt dato,
men den dato det er 3 måneder tilbage fra dato for kørsel af
forespørgslen.

Mvh. Martin


Martin (02-06-2008)
Kommentar
Fra : Martin


Dato : 02-06-08 07:20

Martin Ploug wrote:
>> SELECT * FROM tabel
>> WHERE felt > DATE_ADD(NOW(), INTERVAL 1 DAYS)
>>
>> <http://dev.mysql.com/doc/refman/5.0/en/date-and-time-functions.html>
>> Er altid et godt sted at kigge når man skal lege med dato funktioner i
>> mysql
>
> Hej
>
> Kræver DATE_ADD ikke, at jeg kender de eksakte datoer?

Nææ..

>
> Jeg har kigget på
> http://dev.mysql.com/doc/refman/5.0/en/date-and-time-functions.html#function_date-add
>
>
> men jeg tror ikke jeg helt forstår, hvordan man bruger DATE_ADD og
> INTERVAL.
>
> Altså med DATE_ADD kan man indsætte to datoer?

Ja, det kan man også...

> Hvad så, hvis de to datoer er dynamiske (se nedenstående) ?
> Hvad gør INTERVAL?

Tager et interval fra den første angivet dato

>
> Jeg ønsker at finde records, som er oprettet inden for 3 måneder
> (eller f.eks. 90 dage) fra dags dato.

NOW() = Dags dato, eller rettere sagt, den dags dato queryen bliver udført

Hvis du så vil finde fra de sidste 90 dage
INTERVAL 90 DAYS

DATE_SUB(NOW(), INTERVAL 90 DAYS)


>
> Dags dato skal ikke være en fast bestemt dato, men den dato det
> er den pågældende dag man vælger at køre forespørgslen
> Datoen tre måneder tilbage er heller ikke en fast bestemt dato,
> men den dato det er 3 måneder tilbage fra dato for kørsel af
> forespørgslen.

NOW() er ALTID dags dato og faktisk også klokken :), hvis du ønsker en
anden dato, så kan du bare skrive det ind istedet.

DATE_ADD('2008-25-01', INTERVAL 90 DAYS)

Hvis du fx. ønsker rækker imellem 2 datoer, så kan BETWEEN bruges

WHERE (datofelt BETWEEN NOW() AND 2008-01-01)

Gert Krabsen (30-05-2008)
Kommentar
Fra : Gert Krabsen


Dato : 30-05-08 22:09

Martin Ploug skrev:
>> Ved at fortælle:
>>
>> - hvilken database vi har fat i - de behandler ikke altid
>> datofelter ens
>> - hvordan du har registreret oprettelsesdagen - felttype?
>
> Det er MySql, hvis det er det du tænker på?

Det er det. Der er jo så ingen grund til at henvise til
Access-dokumentationen..


Jeg ville kigge nærmere på DATEDIFF()


http://dev.mysql.com/doc/refman/5.0/en/date-and-time-functions.html#function_datediff

Martin Ploug (05-06-2008)
Kommentar
Fra : Martin Ploug


Dato : 05-06-08 17:12

Hej

Jeg har også fået hjælp til en løsning her:
http://www.eksperten.dk/spm/833375


--
Med venlig hilsen

Martin Ploug
Skejbytoften 107 3. th.
8200 Århus N

Tlf. 8628 9969
Mobil: 2284 1057

E-mail: mploug@pc.dk
Web: http://www.musiklokaler.dk
"Gert Krabsen" <fjernkrabsen@fjernkrabsenfjern.dk> skrev i meddelelsen
news:48406ca5$0$90271$14726298@news.sunsite.dk...
> Martin Ploug skrev:
>>> Ved at fortælle:
>>>
>>> - hvilken database vi har fat i - de behandler ikke altid
>>> datofelter ens
>>> - hvordan du har registreret oprettelsesdagen - felttype?
>>
>> Det er MySql, hvis det er det du tænker på?
>
> Det er det. Der er jo så ingen grund til at henvise til
> Access-dokumentationen..
>
>
> Jeg ville kigge nærmere på DATEDIFF()
>
>
> http://dev.mysql.com/doc/refman/5.0/en/date-and-time-functions.html#function_datediff


Martin (05-06-2008)
Kommentar
Fra : Martin


Dato : 05-06-08 18:05

Martin Ploug wrote:
> Hej
>
> Jeg har også fået hjælp til en løsning her:
> http://www.eksperten.dk/spm/833375

Tjaaa... forskellen på mit første forslag og det du har fået derinde er
godt nok lille :)

PS
Husk manualen er genial!

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

Månedens bedste
Årets bedste
Sidste års bedste