Simpele SQL vraag - Filteren op datum

Pagina: 1
Acties:
  • 203 views

  • ThinClientQ
  • Registratie: April 2010
  • Laatst online: 29-01 19:35
Goedemiddag,

Ik heb eigenlijk een simpele SQL vraag voor school.

Ik wil graag filteren op geboortedatum, bijvoorbeeld 1971, hoe doe ik dit? Via google kom ik er niet, waarschijnlijk door de zoektermen.

Dit heb ik als query:

select datum
from tabel
where datum='1971'

De datum zo genoteerd in de tabel: '28-12-1971 0:00:00'

Als iemand mij kan helpen, heel graag. :)

  • antonboonstra
  • Registratie: Augustus 2002
  • Laatst online: 16:13

antonboonstra

8815Wp | WP | Tesla | Zero

SELECT datum FROM tabel WHERE YEAR(datum)='1971';

[ Voor 7% gewijzigd door antonboonstra op 20-05-2010 13:37 ]

📸Canon EOS 5D IV 🚁DJI Mavic Pro 🏍️Zero SR ⚡Tesla M3 LR 🌡️Daikin US 3.5kW ☀️8815Wp 🔋Marstek Venus-E 5,12 kWh Tweakers PVOutput lijst


  • Snake
  • Registratie: Juli 2005
  • Laatst online: 07-03-2024

Snake

Los Angeles, CA, USA

Niet onbelangrijk: Over welk SQL dialect spreken we? MySQL? AccessSQL (niet dat dat een db is :P ), MSSQL?

Going for adventure, lots of sun and a convertible! | GMT-8


  • Motrax
  • Registratie: Februari 2004
  • Niet online

Motrax

Profileert

Of gebruik een BETWEEN, hoewel ik uit de losse pols gok dat het trager is.

Datumformaat van het veld is dan 'DD-MM-YYYY HH24:MI:SS'.

SQL:
1
2
3
4
5
SELECT DATUM
FROM TABEL
WHERE DATUM BETWEEN TO_DATE('01-01-1971 00:00:00', 'DD-MM-YYYY HH24:MI:SS')
AND TO_DATE('31-12-1971 23:59:59' ,'DD-MM-YYYY HH24:MI:SS')
;


Of:
SQL:
1
2
3
4
5
SELECT DATUM
FROM TABEL
WHERE DATUM => TO_DATE('01-01-1971 00:00:00', 'DD-MM-YYYY HH24:MI:SS')
AND DATUM < TO_DATE('01-01-1972 00:00:00', 'DD-MM-YYYY HH24:MI:SS')
;
Snake schreef op donderdag 20 mei 2010 @ 13:41:
Niet onbelangrijk: Over welk SQL dialect spreken we? MySQL? AccessSQL (niet dat dat een db is :P ), MSSQL?
Daar komt de TS vanzelf achter als het niet werkt :+

[ Voor 20% gewijzigd door Motrax op 20-05-2010 13:48 ]

☻/
/▌
/ \ Analyseert | Modelleert | Valideert | Solliciteert | Generaliseert | Procrastineert | Epibreert |


  • remco_k
  • Registratie: April 2002
  • Laatst online: 19:21

remco_k

een cassettebandje was genoeg

Motrax schreef op donderdag 20 mei 2010 @ 13:47:
Of gebruik een BETWEEN, hoewel ik uit de losse pols gok dat het trager is.

Datumformaat van het veld is dan 'DD-MM-YYYY HH24:MI:SS'.

SQL:
1
2
3
4
5
SELECT DATUM
FROM TABEL
WHERE DATUM BETWEEN TO_DATE('01-01-1971 00:00:00', 'DD-MM-YYYY HH24:MI:SS')
AND TO_DATE('31-12-1971 23:59:59' ,'DD-MM-YYYY HH24:MI:SS')
;


Of:
SQL:
1
2
3
4
5
SELECT DATUM
FROM TABEL
WHERE DATUM => TO_DATE('01-01-1971 00:00:00', 'DD-MM-YYYY HH24:MI:SS')
AND DATUM < TO_DATE('01-01-1972 00:00:00', 'DD-MM-YYYY HH24:MI:SS')
;



[...]
Daar komt de TS vanzelf achter als het niet werkt :+
Volgens mij is het makkelijker om de datum gewoon in standaard formaat te schrijven ipv TO_DATE als je 'm wilt vergelijken: '1971-01-01 00:00:00'.
Voor zover mijn kennis rijkt gaat elke DB server daar goed mee om.

Bovenstaande doet overigens exact hetzelfde als:
antonboonstra schreef op donderdag 20 mei 2010 @ 13:36:
SELECT datum FROM tabel WHERE YEAR(datum)='1971';
Maar hier had moeten staan:
SELECT datum FROM tabel WHERE YEAR(datum)=1971
(zonder de quotes - hoewel het met ook zou werken)
Of dit werkt hangt dan weer af van het database dialect. (Voor MSSQL gebruik je b.v. datepart(...))

[ Voor 19% gewijzigd door remco_k op 20-05-2010 13:53 ]

Alles kan stuk.


  • ThinClientQ
  • Registratie: April 2010
  • Laatst online: 29-01 19:35
Het is gelukt, bedankt voor jullie hulp :+ Het was overigens Microsoft SQL

  • Equator
  • Registratie: April 2001
  • Laatst online: 30-01 08:52

Equator

Crew Council

#whisky #barista

Verder is dit wel heel erg basic T-SQL.. VOlgende keer kan je ook gewoon een boek kopen of iets beter zoeken :)
Pagina: 1

Dit topic is gesloten.