v2.5.2
Giriş yap

Neden/Nasıl Yanlış Veri Saydırıyor?

ugurkilci
500 defa görüntülendi

Bu şekilde kodum var. Bunda hiç problem yok. Bugün üye sayısı 1 olmalı çünkü veri tabanında öyle bir kayıt yok ama bana 29 kişi bugün üye oldu diyor. Çok enteresan bir olay.

Bu da sitemin "sözde kendim için hazırladığım analizi" https://www.girisimzel.com/merhabaekrani.php

Girdiğiniz anda saçma sapan bir şeyin döndüğünü anlayacaksınız ama onun neden kaynaklandığını ve nasıl çözeceğimi bulamadım.

<?php
    
    $sorgu = $db->prepare("SELECT COUNT(*) FROM uyeler WHERE DAY(uye_tarih) = DAY(CURDATE())");
    $sorgu->execute();
    $say = $sorgu->fetchColumn();
   
    echo $say;

?>
bgokcol
1250 gün önce

Kodda hatalar var ancak ondan önce şunu belirtmek istiyorum, Mysql sunucunun timezone'u muhtemelen Türkiye'den farklıdır ondan kaynaklı kaymalar olur. Düzeltmek için hesap kodlarından önce şunu yazın:
$db->exec("SET time_zone='+03:00';");

Bugünkü satırları çekmek için:
select count(*) as total from uyeler where DATE(uye_tarih) = CURDATE()

Bu haftaki kayıtları çekmek için (son 7 gün değil! hafta başından itibaren):
select count(*) as total from uyeler where YEARWEEK(uye_tarih, 1) = YEARWEEK(CURDATE(), 1)
Not: Burada 1 parametresi haftayı pazartesinden başlatmak için.

Bu ayki kayıtları çekmek için (son 30 gün değil! ay başından itibaren):
select count(*) as total from uyeler where MONTH(uye_tarih) = MONTH(CURDATE()) AND YEAR(uye_tarih) = YEAR(CURDATE())

Bu yıl kayıtları çekmek için (son 365 gün değil! yıl başından itibaren):
select count(*) as total from uyeler where YEAR(uye_tarih) = YEAR(CURDATE())