Vraag SQL-query waarbij () het jaar van de datum $ jaar is


Ik bewaar datums in mijn database in een kolom van date data type.

Laten we zeggen dat ik een kolom heb date waar ik gegevens zoals deze "2011-01-01", "2012-01-01", "2012-02-02" etc. opslaat

Nu moet ik SQL maken dat alleen rijen selecteert waar date is gelijk aan 2012

SELECT * FROM table WHERE date=hasSomehowYearEqualTo=2012

Hoe zou de zoekopdracht eruit zien?


10
2018-02-08 01:43


oorsprong


antwoorden:


Do NIET gebruik YEAR(date) - dit zal berekenen YEAR(date) voor alle datums, zelfs voor die, die je nooit gebruikt. Het maakt ook gebruik van een index onmogelijk - het slechtste geval op de DB-laag.

Gebruik

$sql="SELECT * FROM table WHERE `date` BETWEEN '$year-01-01' AND '$year-12-31'"

Als algemene regel: als u de keuze hebt tussen een berekening op een constante en een berekening op een veld, gebruikt u de eerste.


16
2018-02-08 01:55



Bekijk de YEAR()  docs functie voor MySQL

SELECT * FROM table WHERE YEAR(date)=2012

7
2018-02-08 01:47



selecteer * in de tabel waar DATEPART (YEAR, [DATE]) = 2012


-2
2018-02-08 03:56