sql >> Database >  >> RDS >> Mysql

Selecteer huidige maanden records mysql uit de tijdstempelkolom

UPDATE

Een veel betere indexvriendelijke manier om uw gegevens op te vragen voor een reeks datums

SELECT id, FROM_UNIXTIME(timestampfield) timestamp 
  FROM table1
 WHERE timestampfield >= UNIX_TIMESTAMP(LAST_DAY(CURDATE()) + INTERVAL 1 DAY - INTERVAL 1 MONTH)
   AND timestampfield <  UNIX_TIMESTAMP(LAST_DAY(CURDATE()) + INTERVAL 1 DAY);

Opmerking: U past geen enkele functie toe op uw kolomgegevens, maar voert alle noodzakelijke berekeningen uit aan de rechterkant van de voorwaarden (die constanten zijn en slechts eenmaal na uitvoering worden geëvalueerd). Op deze manier laat je MySQL profiteren van index(en) die je mogelijk in het timestampfield hebt staan kolom.

Oorspronkelijke antwoord:

SELECT id, FROM_UNIXTIME(timestampfield) timestamp 
  FROM table1
 WHERE MONTH(FROM_UNIXTIME(timestampfield)) = MONTH(CURDATE())
   AND YEAR(FROM_UNIXTIME(timestampfield)) = YEAR(CURDATE())

Opmerking: Hoewel deze zoekopdracht de juiste resultaten oplevert, maakt deze in feite het juiste gebruik van de index(en) die u mogelijk in het timestampfield hebt staan ​​ongeldig. kolom (wat betekent dat MySQL gedwongen wordt een volledige scan uit te voeren)

Hier is SQLFiddle demo



  1. Cloud 9 IDE kan geen verbinding maken met de database

  2. Postgres kopieert Heroku Production DB naar lokale ontwikkeling DB

  3. Haal rijen gegroepeerd op uur op met MySQL

  4. MySQL:tel de verschillende rijen per dag