Nasıl MySQL tarihleri ​​filtre?

2 Cevap php

Ben yıl ve aya göre belirtilen "arşiv" sayfaları kümesi oluşturma. Benim masada ben posted adlı bir datetime alanı var. Ben belirli bir ay içinde tüm satırları seçmek istiyorum.

Ben iki çözüm düşündüm:

(1) dize eşleştirme kullanın:

SELECT ... WHERE posted LIKE '2009-06%'

(2) Bazı MySQL çıkarma işlevlerini kullanın:

SELECT ... WHERE YEAR(posted)=2009 AND MONTH(posted)=6

Bunlardan hangisi daha hızlı olacak ve daha iyi çözümler vardır?

2 Cevap

SELECT   *
WHERE    posted >= '2009-06-01'
         AND posted < '2009-07-01'

Bu bir verimli sorguları hem aksine, posted üzerinde bir dizin kullanır.

Unutmayın sizin posted bir VARCHAR, ardından aşağıdaki sorgu gibi tutuyor olsaydı:

SELECT ... WHERE posted LIKE '2009-06%'

çok dizin kullanırsınız.

(Eğer tarih boyu az kullanarak eğer) bu tasarım konusunda çekinceleri göz ardı ederek, standart sözdizimi, ya da "ilk tarih ve son güncel ARASINDA" olacağını, "> = ilk-tarih VE gönderdi