PHP / MySQL: son * tam * hafta kayıtlar alınıyor

2 Cevap php

Ben şu anda bir tablo girişlerinin son yedi gün değer almak için aşağıdaki SQL kullanıyorum:

purchased >= date_sub(now() ,interval 7 day)

Bu yüzden (Cumartesi gece yarısı gece yarısı Cumartesi) girdilerinin değerinde son tam hafta alır Ancak, ben bu değiştirmeniz gerekir. Yani temelde, hafta boyunca sonuç değişmeyecek, ama birisi Pazar sabahı ziyaret ettiğinde onlar yenilenmiş olacaktır.

Ben sadece vb Ayrıca, bu iş için MySQL fonksiyonları orada inşa edilir günleri çalışmak nasıl başımı alamıyorum?

I hope I've explained that clearly enough. This is in a PHP application.

Thanks, Jack

2 Cevap

MySQL işlevine bakın YEARWEEK().

Böylece gibi bir şey yapabileceğini

SELECT * FROM table WHERE YEARWEEK(purchased) = YEARWEEK(NOW());

Sen ikinci bir mod parametresi kullanılarak haftanın başlangıç ​​gününü değiştirmek

Daha iyi ne olabilir, ancak her nasılsa '00:00 Geçen Pazar' tarihini hesaplamak için, ve sonra veritabanı her satır için bir işlevi çalıştırmak olmazdı, ama ben yapmanın belirgin bir yol göremiyordu ki MySQL . Sen ancak kolayca php bu oluşturmak ve böyle bir şey yapabileceğini

$sunday = date(('Y-m-d H:i:s'), strtotime('last sunday 00:00'));
$sql = "SELECT * FROM table WHERE purchased >= '$sunday'";

MySQL bir tarihten itibaren yılın hafta sayısal almak için izin veren bir WEEK() işlevi vardır. Sen -1 (bugün hafta) almak ve üzerinde filtreleme kayıtlarınız haftasına karşılaştırabilirsiniz.