Mysql
 sql >> база данни >  >> RDS >> Mysql

От клеймото за време в SQL, избиране на записи от днес, вчера, тази седмица, този месец и между две дати php mysql

Ако избирате само по дата, базирайте изчисленията си на CURDATE (който връща само дата), а не NOW (който връща дата и час). Тези примери ще уловят всички времена в рамките на дневните диапазони:

  • Днес:WHERE timestamp >= CURDATE()
  • Вчера:WHERE timestamp >= DATE_SUB(CURDATE(), INTERVAL 1 DAY) AND timestamp < CURDATE()
  • Този месец:WHERE timestamp >= DATE_SUB(CURDATE(), INTERVAL DAYOFMONTH(CURDATE())-1 DAY)
  • Между двете дати 3 юни 2013 г. и 7 юни 2013 г. (обърнете внимание как крайната дата е посочена като 8 юни, а не 7 юни):WHERE timestamp >= '2013-06-03' AND timestamp < '2013-06-08'

"Тази седмица" зависи от кой ден започвате седмицата си; ще оставя това на вас. Можете да използвате DAYOFWEEK функция за настройване на CURDATE() до правилните диапазони.

Допълнение :Типът колона на OP беше INTEGER , съхраняващ UNIX времеви печат и моят отговор предполагаше, че типът на колоната е TIMESTAMP . Ето как да направите едни и същи неща със стойност на времеви отпечатък в UNIX и все пак да поддържате оптимизация, ако колоната е индексирана (както ще направят отговорите по-горе, ако TIMESTAMP колоната е индексирана)...

По принцип решението е просто да обвиете началната и/или крайната дата в UNIX_TIMESTAMP функция:

  • Днес:WHERE timestamp >= UNIX_TIMESTAMP(CURDATE())
  • Вчера:WHERE timestamp >= UNIX_TIMESTAMP(DATE_SUB(CURDATE(), INTERVAL 1 DAY)) AND timestamp < UNIX_TIMESTAMP(CURDATE())
  • Този месец:WHERE timestamp >= UNIX_TIMESTAMP(DATE_SUB(CURDATE(), INTERVAL DAYOFMONTH(CURDATE())-1 DAY))
  • Между двете дати 3 юни 2013 г. и 7 юни 2013 г. (обърнете внимание как крайната дата е посочена като 8 юни, а не 7 юни):WHERE timestamp >= UNIX_TIMESTAMP('2013-06-03') AND timestamp < UNIX_TIMESTAMP('2013-06-08')



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL Как да сумирате от друга таблица и да вмъкнете в друга таблица

  2. Синтаксис на MySQL UPDATE с множество таблици, използващи клауза WHERE

  3. MySQL - Най-добрият метод за обработка на тези йерархични данни?

  4. Как да създадете MySQL база данни с помощта на cPanel API

  5. PDF създаден с FPDF и как да запазите и извлечете pdf