sql >> Database >  >> RDS >> Mysql

Van het tijdstempel in SQL, records selecteren van vandaag, gisteren, deze week, deze maand en tussen twee datums php mysql

Als je alleen op datum selecteert, baseer je je berekeningen dan op CURDATE (die alleen de datum retourneert) in plaats van NOW (die datum en tijd retourneert). Deze voorbeelden zullen alle tijden binnen de dagbereiken opvangen:

  • Vandaag:WHERE timestamp >= CURDATE()
  • Gisteren:WHERE timestamp >= DATE_SUB(CURDATE(), INTERVAL 1 DAY) AND timestamp < CURDATE()
  • Deze maand:WHERE timestamp >= DATE_SUB(CURDATE(), INTERVAL DAYOFMONTH(CURDATE())-1 DAY)
  • Tussen de twee datums 3 juni 2013 en 7 juni 2013 (let op hoe de einddatum is gespecificeerd als 8 juni, niet 7 juni):WHERE timestamp >= '2013-06-03' AND timestamp < '2013-06-08'

De "deze week" hangt af van op welke dag je je week begint; Dat laat ik aan jou over. U kunt de DAYOFWEEK functie om CURDATE() aan te passen naar het juiste bereik.

Aanvulling :OP's kolomtype was INTEGER , het opslaan van een UNIX-tijdstempel, en mijn antwoord ging ervan uit dat het kolomtype TIMESTAMP was . Hier leest u hoe u allemaal dezelfde dingen kunt doen met een UNIX-tijdstempelwaarde en toch de optimalisatie handhaaft als de kolom is geïndexeerd (zoals de bovenstaande antwoorden zullen doen als de TIMESTAMP kolom is geïndexeerd)...

Kortom, de oplossing is om de begin- en/of einddatums gewoon in de UNIX_TIMESTAMP functie:

  • Vandaag:WHERE timestamp >= UNIX_TIMESTAMP(CURDATE())
  • Gisteren:WHERE timestamp >= UNIX_TIMESTAMP(DATE_SUB(CURDATE(), INTERVAL 1 DAY)) AND timestamp < UNIX_TIMESTAMP(CURDATE())
  • Deze maand:WHERE timestamp >= UNIX_TIMESTAMP(DATE_SUB(CURDATE(), INTERVAL DAYOFMONTH(CURDATE())-1 DAY))
  • Tussen de twee datums 3 juni 2013 en 7 juni 2013 (let op hoe de einddatum wordt gespecificeerd als 8 juni, niet 7 juni):WHERE timestamp >= UNIX_TIMESTAMP('2013-06-03') AND timestamp < UNIX_TIMESTAMP('2013-06-08')



  1. CHR() Functie in Oracle

  2. Normalisatie in MYSQL

  3. PostgreSQL-accent + hoofdletterongevoelig zoeken

  4. MySQL-transactie en trigger