[SQL] maand en jaar filteren uit een datum/tijd kolom

Pagina: 1
Acties:
  • 4.052 views sinds 30-01-2008
  • Reageer

  • Bezzerk
  • Registratie: Januari 2002
  • Laatst online: 20:04
Ik zit met een probleem. Ik moet een overzicht creeëren waarin alles gefilterd moet worden op maand+jaar.

Nu hebben de kolommen de eigenschap "Datum/tijd" en dus zijn de records op basis van DD-MM-YYYY HH:MM:SS

Nu wil ik hier dus MM-YYYY uit filteren in een kolom in de query. Het zal vast niet heel erg lastig zijn maar ik zit er al de hele dag aan te ploeteren en zie door de bomen het bos niet meer. Kan iemand me hier uit helpen?

Ik gebruik de SQL code in Access trouwens.

De query die ik tot nu heb is:
code:
1
2
3
SELECT b.batchnr, b.starttijdstip, b.stoptijdstip, bd.Verpakkingslijn, bd.stationnr, maand
FROM batchdoseerstation AS bd, batch AS b, receptonderdeel AS r
WHERE (((b.batchnr)=bd.batch) And ((bd.Halffabrikaat)=r.halffabrikaat) And ((bd.gewicht) Not Between r.mingewicht And r.maxgewicht));

Bij de SELECT-statement is maand de kolom waar de variable in moet komen

[ Voor 31% gewijzigd door Bezzerk op 22-12-2005 20:41 ]


  • BasieP
  • Registratie: Oktober 2000
  • Laatst online: 22-07-2024
ik neem aan dat je een aantal records van de afgelopen xx maand / jaren moet hebben

dan kan je toch between gebruiken? (en de waardes in de app uitrekenen)

This message was sent on 100% recyclable electrons.


  • Bezzerk
  • Registratie: Januari 2002
  • Laatst online: 20:04
Ik moet een aantal records uit een maand hebben. Maar om de gewenste maand te kunnen opvragen moet ik ze dus kunnen filteren op MM-YYYY.
Vanuit die kolom kan ik dan de querie opbouwen welke records hij moet pakken.

  • -FoX-
  • Registratie: Januari 2002
  • Niet online

-FoX-

Carpe Diem!

Iets in de aard van:
code:
1
 WHERE TO_CHAR(datumveld, 'MM-YYYY') = '12-2005'

is voor Oracle, beetje verdere zoekwerk levert je wel een juist resultaat op

Edit:
Probeer eens:
code:
1
 WHERE Year(datumVeld) = 2005 AND Month(datumVeld) = 12

[ Voor 36% gewijzigd door -FoX- op 22-12-2005 20:52 ]


  • Bezzerk
  • Registratie: Januari 2002
  • Laatst online: 20:04
-FoX- schreef op donderdag 22 december 2005 @ 20:47:

Edit:
Probeer eens:
code:
1
 WHERE Year(datumVeld) = 2005 AND Month(datumVeld) = 12
Deze snap ik niet, maar zo staan er ook geen variable? :?

  • CrashOne
  • Registratie: Juli 2000
  • Niet online

CrashOne

oOoOoOoOoOoOoOoOoOo

Je kan toch gewoon zeggen between vorige maand en volgende maand?

Huur mij in als freelance SEO consultant!


  • whoami
  • Registratie: December 2000
  • Laatst online: 19:37
Hoe bedoel je ?
Mbhv de Year & Month functie, haal je respectievelijk het jaar en de maand uit het datumveld. Dan moet je toch kunnen bereiken wat je wilt ?
Wat bedoel je met variable ? Je kan toch met behulp van parameters die criteria variabel maken ? Of bedoel je dat niet ?

Wees wel indachtig, dat je op deze manier eventuele indexes die op het datumveld liggen, niet gebruikt worden.

https://fgheysels.github.io/


  • Bezzerk
  • Registratie: Januari 2002
  • Laatst online: 20:04
CrashOne schreef op donderdag 22 december 2005 @ 21:03:
Je kan toch gewoon zeggen between vorige maand en volgende maand?
Jawel, maar dan moet ik dus eerst die maanden filteren.

Ineerste instantie dacht ik ook "between [DD-MM-YYYY HH:MM:SS] and [DD-MM-YYYY HH:MM:SS]" maar daar denkt access dus anders over. Dit wil access wel doen als als ik 2x een datum+tijd invoer die op dezelfde dag vallen, maar zodra ik bijv. 01-12-2005 en 31-12-2005 invoer geeft hij geen thuis. :|

-edit-
Ik zit met een tabel met 2 kolommen met de eigenschap datum/tijd. Uit deze kolom moet ik maand+jaar filteren om de maand te kunnen vergelijken met de in te voeren maand.

[ Voor 16% gewijzigd door Bezzerk op 22-12-2005 21:13 ]


  • -FoX-
  • Registratie: Januari 2002
  • Niet online

-FoX-

Carpe Diem!

Dus gewoon
code:
1
WHERE Year(b.starttijdstip)=2005 AND Month(b.starttijdstip)=12

  • Bezzerk
  • Registratie: Januari 2002
  • Laatst online: 20:04
-FoX- schreef op donderdag 22 december 2005 @ 21:18:
Dus gewoon
code:
1
WHERE Year(b.starttijdstip)=2005 AND Month(b.starttijdstip)=12
Ok dat snap ik niet, wat ik daarvan heb gemaakt werkt dus ook niet

code:
1
2
3
SELECT b.batchnr, b.starttijdstip, bd.Verpakkingslijn, bd.stationnr, Year, Month
FROM batchdoseerstation AS bd, batch AS b, receptonderdeel AS r
WHERE (((b.batchnr)=[bd].[batch]) AND ((bd.Halffabrikaat)=[r].[halffabrikaat]) AND ((bd.gewicht) Not Between [r].[mingewicht] And [r].[maxgewicht])) AND Year=b.starttijdstip AND Month=b.starttijdstip;


Zou je dat nog duidelijker kunnen voorkauwen want zoals ik dat interpreteer werkt ie dus niet :|

  • Bezzerk
  • Registratie: Januari 2002
  • Laatst online: 20:04
Ok sorry voor de dubbelpost maar ik heb de query voor elkaar en achteraf kon het iets makkelijker.

De uiteindelijke code:
code:
1
2
3
SELECT b.batchnr, b.starttijdstip, b.Verpakkingslijn, bd.stationnr
FROM batchdoseerstation AS bd, batch AS b, receptonderdeel AS r
WHERE (((b.batchnr)=bd.batch) And ((bd.Halffabrikaat)=r.halffabrikaat) And ((bd.gewicht) Not Between r.mingewicht And r.maxgewicht)) AND Year([b.starttijdstip]) = [Voer het gewenste jaartal in] AND Month([b.starttijdstip]) = [Voer de gewenste maand in];


Bedankt voor de moeite! :-)

[ Voor 40% gewijzigd door Bezzerk op 22-12-2005 23:19 ]

Pagina: 1