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

Изберете текущите месеци, записващи mysql от колоната с времеви печат

АКТУАЛИЗИРАНЕ

Много по-добър удобен за индексите начин за запитване на вашите данни за диапазон от дати

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);

Забележка: Вие не прилагате никаква функция към данните в колоната си, а по-скоро правите всички необходими изчисления от дясната страна на условията (които са константи и се оценяват само веднъж след изпълнение). По този начин позволявате на MySQL да се възползва от индекси, които може да имате в timestampfield колона.

Оригинален отговор:

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

Забележка: Въпреки че тази заявка дава правилните резултати, тя ефективно обезсилва правилното използване на индекса(ите), които може да имате в timestampfield колона (което означава, че MySQL ще бъде принуден да извърши пълно сканиране)

Ето SQLPiddle демонстрация



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. mysql - Изтрих потребителската таблица! как мога да го възстановя?

  2. Какво означава „неподписан“ в MySQL и кога да го използвам?

  3. Neo4j - Създайте ограничение с помощта на Cypher

  4. MySQL Промяна на колекцията на всички таблици

  5. качване на множество изображения грешно количество при качване на файл