Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Pilih catatan bulan saat ini mysql dari kolom stempel waktu

PERBARUI

Cara ramah indeks yang jauh lebih baik untuk menanyakan data Anda untuk rentang tanggal

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

Catatan: Anda tidak menerapkan fungsi apa pun ke data kolom Anda, melainkan melakukan semua perhitungan yang diperlukan di sisi kanan kondisi (yang merupakan konstanta dan dievaluasi hanya sekali pasca-eksekusi). Dengan cara ini Anda mengizinkan MySQL untuk memanfaatkan indeks yang mungkin Anda miliki di timestampfield kolom.

Jawaban asli:

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

Catatan: Meskipun kueri ini menghasilkan hasil yang benar, kueri ini secara efektif membatalkan penggunaan indeks yang tepat yang mungkin Anda miliki di timestampfield kolom (artinya MySQL akan dipaksa untuk melakukan fullscan)

Ini SQLFiddle demo



  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 bagaimana membandingkan dua kolom dari dua tabel yang berbeda

  2. temukan jumlah baris dalam hasil mysql yang dikembalikan (nodejs)

  3. Mengambil cadangan dari jarak jauh menggunakan innobackupex

  4. hasilkan baris kosong meskipun kosong di antara 2 tanggal

  5. Bagaimana cara menyimpan data dengan jumlah atribut dinamis dalam database