Toon posts:

[MySQL] maandelijkse gegevens selecteren

Pagina: 1
Acties:
  • 111 views sinds 30-01-2008

Verwijderd

Topicstarter
ik heb een database waar ik gegevens bij hou over mijn films, dvd die ik heb, films die ik heb gezien, bioscoop bezoeken uitgaven. en er zullen ook nog wel records bij komen.

nu wil ik rapporten gaan genereren per maand. nu heb ik een query met de datum gegevens. alleen kom ik er niet uit. Ik wil dus een rapport voor de maand juni, juli, enz.

nu kom ik niet verder dan

SQL:
1
2
3
4
5
 
SELECT tijd.ID, tijd.Date, 
FROM tijd
Where tijd.Date = Date() ;
 


nu krijg ik alleen de datum van vandaag, tot zover ben ik ben ik gekomen _/-\o_

kan iemand mij hiermee helpen???

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Nogal wiedes; in je where-clause specificeer je alleen vandaag te willen hebben :X

Lees dit eens ;) Dan kun je in de where-clause nog aangeven (bijv.) alleen 2007 te willen zien met behulp van datum functies.

Geef overigens even aan welke SQL we het hier over hebben (MySQL? PostgreSQL? MSSQL? Etc.)

[ Voor 37% gewijzigd door RobIII op 21-06-2007 13:31 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • arnob
  • Registratie: Juli 2000
  • Niet online
>Where tijd.Date = Date()
where datepart(mm, tijd.date) = datepart(mm, date())
oid. blader eens door de date functies van je dbms documentatie.

  • roan
  • Registratie: December 2003
  • Niet online
WHERE date LIKE

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
LIKE? :X
LIKE
Determines whether or not a given character string matches a specified pattern.
Er zijn datum-functies hoor ;)

[ Voor 25% gewijzigd door RobIII op 21-06-2007 13:40 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Verwijderd

Topicstarter
allemaal geprobeerd, ben nu wel iets verder... alleen van de afgelopen 30 dagen

SELECT tijd.ID, tijd.Date,
FROM tijd
Where tijd.Date BETWEEN Date() and Date() -30;

(btw MySql)

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Verwijderd schreef op donderdag 21 juni 2007 @ 13:40:
allemaal geprobeerd, ben nu wel iets verder... alleen van de afgelopen 30 dagen

SELECT tijd.ID, tijd.Date,
FROM tijd
Where tijd.Date BETWEEN Date() and Date() -30;

(btw MySql)
Nou dan? Nu heb je de afgelopen 30 dagen, dan nog een goup by er op, wat sum()'s, count()'s of whatever en je bent er. Overigens zou ik niet "gewoon" 30 aftrekken. 30 wat? 30 dagen? 30 weken? 30 jaar? Ik zou het liever wat explicieter doen (wederom m.b.v. de datum functies zoals date_add() en date_sub()).

Dit is overigens redelijk basic SQL werk; verdiep je gewoon even in de documentatie want met wat lezen moet je er prima uit kunnen komen.

[ Voor 43% gewijzigd door RobIII op 21-06-2007 13:47 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • Acid__Burn
  • Registratie: Maart 2007
  • Laatst online: 21-11 18:08
Je kunt een BETWEEN gebruiken...

Wat ook werkt:

SQL:
1
SELECT [columns] FROM [table] WHERE DATEPART(MONTH,[column]) = *nummer van de maand die je wilt zien* AND DATEPART(YEAR,[column]) = *jaargetal dat je wilt zien*.


Dus (als voorbeeld): kolom die je wilt zien is prijs, op basis van een datum uit kolom datum_aanvraag.

SQL:
1
SELECT prijs FROM orders WHERE DATEPART(MONTH,datum_aanvraag) = 6 AND DATEPART(YEAR,datum_aanvraag) = 2007.


[edit]
Het gaat hier om MS SQL... :+

[ Voor 7% gewijzigd door RobIII op 21-06-2007 14:03 . Reden: code tags toegevoegd... ]


  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 23:10

TeeDee

CQB 241

Een optie is:
SQL:
1
select melp, blaat from tijd where month(tijd)=6 and year(tijd)=2007.

Dan krijg jij per maand je gegevens (tenminste je wilt volgens je OP per maand een rapport bakken) of zoals RobIII stoeien met group by etc.

Heart..pumps blood.Has nothing to do with emotion! Bored


  • BikkelZ
  • Registratie: Januari 2000
  • Laatst online: 24-11 23:24

BikkelZ

CMD+Z

RobIII schreef op donderdag 21 juni 2007 @ 13:41:
[...]

Nou dan? Nu heb je de afgelopen 30 dagen, dan nog een goup by er op, wat sum()'s, count()'s of whatever en je bent er. Overigens zou ik niet "gewoon" 30 aftrekken. 30 wat? 30 dagen? 30 weken? 30 jaar? Ik zou het liever wat explicieter doen (wederom m.b.v. de datum functies zoals date_add() en date_sub()).
--Blaat--
SQL:
1
GROUP BY MONTH(datumveld)

[ Voor 11% gewijzigd door BikkelZ op 21-06-2007 13:48 ]

iOS developer


  • tss68nl
  • Registratie: Mei 2007
  • Laatst online: 07-05 23:55
Ik maak uit je query uit de startpost op dat je een aparte tijd tabel hebt? Lijkt mij dat je in die tabel dan ook een kolom 'MaandNummer' of 'MaandNaam' hebt of kan maken. Anders is tijd bijhouden in een aparte tabel namelijk volstrekt nutteloos. Dan is de query helemaal simpel, kan je gewoon:

select * from tijd t
where t.MaandNummer = 6

De werkelijke informatie zal uit andere tabellen komen, die zal je middels een join in bovenstaande query moeten toevoegen. Wil je een overzicht over meerdere maanden, gebruik dan een group by op t.MaandNummer

KNX Huisautomatisering - DMX Lichtsturing


Verwijderd

Topicstarter
RobIII schreef op donderdag 21 juni 2007 @ 13:41:
[...]

Nou dan? Nu heb je de afgelopen 30 dagen, dan nog een goup by er op, wat sum()'s, count()'s of whatever en je bent er. Overigens zou ik niet "gewoon" 30 aftrekken. 30 wat? 30 dagen? 30 weken? 30 jaar? Ik zou het liever wat explicieter doen (wederom m.b.v. de datum functies zoals date_add() en date_sub()).

Dit is overigens redelijk basic SQL werk; verdiep je gewoon even in de documentatie want met wat lezen moet je er prima uit kunnen komen.
veel verstand van SQL heb ik niet, dus ik knutsel raak voor een knaak... als ik er verstand van had dan zou ik hier niet zijn, enige is een klein beetje hulp die ik vraag.

  • Acid__Burn
  • Registratie: Maart 2007
  • Laatst online: 21-11 18:08
Acid__Burn schreef op donderdag 21 juni 2007 @ 13:47:

SQL:
1
SELECT prijs FROM orders WHERE DATEPART(MONTH,datum_aanvraag) = 6 AND DATEPART(YEAR,datum_aanvraag) = 2007.
Het kan zijn dat je de maand en het jaar tussen enkele quotes moet zetten ( ' )

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Verwijderd schreef op donderdag 21 juni 2007 @ 13:49:
[...]
veel verstand van SQL heb ik niet, dus ik knutsel raak voor een knaak... als ik er verstand van had dan zou ik hier niet zijn, enige is een klein beetje hulp die ik vraag.
Toch verwachten we in PRG dat je zélf een beetje meedenkt en wat inzet toont; het is hier niet de bedoeling dat we je handje gaan vasthouden of dat we je kant-en-klare oplossingen aandragen. Met de gegeven links en oplossingen moet je er prima zelf uit kunnen komen / knutselen ;)
Acid__Burn schreef op donderdag 21 juni 2007 @ 13:51:
[...]


Het kan zijn dat je de maand en het jaar tussen enkele quotes moet zetten ( ' )
Euh, nee? Die functies returnen een int hoor :? Zowieso ken MySQL geen DatePart functie ;) Maar toch even uit de BOL (MSSQL dus) voor jou speciaal:
DATEPART
Returns an integer representing the specified datepart of the specified date.

Syntax
DATEPART ( datepart , date )

...
<snip>
...

SELECT DATEPART(month, GETDATE()) AS 'Month Number'
GO

Here is the result set:

Month Number 
------------ 
2       

[ Voor 45% gewijzigd door RobIII op 21-06-2007 14:05 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • Acid__Burn
  • Registratie: Maart 2007
  • Laatst online: 21-11 18:08
Damn RobIII...

Dat noemt zich dat Junior DBA... Tenminste... dat dacht ik... :$

Ik werk te lang met collega's die denken slim te zijn een een datum op te slaan in een varchar column 7(8)7

Je hebt helemaal gelijk...

* kruipt huilend in een hoekje *

Verwijderd

Topicstarter
SELECT ID, Date
FROM tijd
where month(date)= 6 and year(date)= 2007

doet het jongens... bedankt... alleen ben ik nog een beetje lui..:p

als ik voor de volgende maanden en afgelopen maanden ook rapporten wil gaan maken, zou ik alles handmatig moeten veranderen die maanden en jaren.

kan het ook automatisch dat op de eerste van de maand, het rapport maakt van de maand er voor.??

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Verwijderd schreef op donderdag 21 juni 2007 @ 14:08:
doet het jongens... bedankt... alleen ben ik nog een beetje lui..:p
Dan ben je hier aan het verkeerde adres. Ik heb je nét nog verteld dat we wat eigen inzet verwachten...
Verwijderd schreef op donderdag 21 juni 2007 @ 14:08:
als ik voor de volgende maanden en afgelopen maanden ook rapporten wil gaan maken, zou ik alles handmatig moeten veranderen die maanden en jaren.
Niet als je een group by gebruikt. Ik roep het nu pas voor de 18e keer ...
Verwijderd schreef op donderdag 21 juni 2007 @ 14:08:
kan het ook automatisch dat op de eerste van de maand, het rapport maakt van de maand er voor.??
Als je het hebt over een gescheduled iets dan zul je op z'n minst moeten aangeven welke programmeertaal ofzo je gebruikt. Maar omdat ik weinig zin heb om je zo aan je handje te gaan houden in dit topic, ondanks dat je er meermalen op bent gewezen, gaat deze op slot.

Als je te lui bent (zoals je nu dus aangeeft) om er zelf wat moeite in te steken, waarom zouden wij het dan wel moeten doen voor je?

[ Voor 73% gewijzigd door RobIII op 21-06-2007 14:16 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij

Pagina: 1

Dit topic is gesloten.