2010-09-22 38 views
5

mevcut hafta seçmek için en güzel yolu nedir ...Böyle bir şey var Şu anda MySQL

SELECT SUM(a.PaidSingle) AS PaidSingle, 
     DATE_FORMAT(a.TimeIn, '%a') AS weekDay 
FROM Attendance AS a JOIN MemberDetail AS m ON m.id = a.MemberID 
WHERE m.CardNumber = '$cardNo' 
AND WEEK(a.TimeIn, 0) = WEEK(NOW(),0) 
GROUP BY weekDay 
ORDER BY a.TimeIn 

Ama bu kadar önceki yıllarda şeyler alacağını yazdıktan sonra kafama dank etti şimdiki yıl kadar iyi.

Basitçe söylemek istediğim ve yıl = thisYear ama tabii ki Aralık ayında başlayan ve Ocak ayında sona eren haftada sadece yarım hafta alacağım.

Bunu MySQL'de yapmanın en iyi yolu nedir, yoksa PHP tabanlı bir çözüm kullanmalı mıyım?

cevap

3

- Yeni etrafında bir probleme yol açar yıl, haftasının bir kısmı 'YYYY53' ve geri kalanı ise 'YYYZ00' olabilir.

Eğer DATE_FORMAT% V ve% X seçenekleri ile uyumlu olacağını modunu 2 kullanabilirsiniz ise: Haftada YYYY53 olayı almak için 1-53 dan

DATE_FORMAT(NOW(), "%X%V") 

Bunlar sadece kullanım hafta numaraları, dolayısıyla bunun mümkün YYYZ yılında bir tarih için.

Korkarım gereksiniminizi karşılamıyor korkuyorum!

+0

Yanıtlarımı sorularım mükemmel, teşekkürler! Ve yapmak zorunda olduğumu düşündüğümden çok daha güzel. Uygulamak ve test etmek için ancak MySQL REF'i okuma konusunda herhangi bir sorun göremiyorum. – Toby

+0

YEARWEEK (NOW(), 2) Aynı etkiyi üretmeyi de buldum. – Toby

0

neden hafta içi seçmeyin: olarak

SELET DATE_FORMAT(NOW(), '%u') 

tarif Sen 0-53 dan hafta numaraları döndüren modunda = 0 ile HAFTA kullandığınız here

+0

Pazartesi 15 Eylül 2010 ve Pazartesi 15 Eylül 2009 (veya o hafta Pazartesi günü ne olursa olsun o yıllarda düşecek olursa) varsa, bu durum yine de başarısız olacaktır. – Toby

+0

linke göre yıl kolayca ekleyebilirsiniz, bu yüzden ben ona bağlı –

İlgili konular