• 16-06-2022, 10:48:52
    #1
    Merhaba, aşağıdaki tarih tablosunda varchar değerinde tarih var. 2 tarih arasında ki veriyi sorgularken gün doğru geliyor. ay da patlıyor.

    örnek tarih: 06.06.2022 - 16.06.2022

    WHERE  (tarih BETWEEN '$ilktarih' and '$sontarih')
    Not: datetime formatında değil tablo, varchar tipinde. (varchar olan tipi değiştirmem mümkün değil, sql sorgusundan felan bir komutla nasıl düzgün sorgulayabilirim)

    Teşekkür ederim
  • 16-06-2022, 10:56:24
    #2
    hkasistan adlı üyeden alıntı: mesajı görüntüle
    Merhaba, aşağıdaki tarih tablosunda varchar değerinde tarih var. 2 tarih arasında ki veriyi sorgularken gün doğru geliyor. ay da patlıyor.

    örnek tarih: 06.06.2022 - 16.06.2022

    WHERE  (tarih BETWEEN '$ilktarih' and '$sontarih')
    Not: datetime formatında değil tablo, varchar tipinde. (varchar olan tipi değiştirmem mümkün değil, sql sorgusundan felan bir komutla nasıl düzgün sorgulayabilirim)

    Teşekkür ederim
    Hocam str_to_date arastir. Tuttugun stringi datetime a anlik cevirip datetime olarak karsilastirman lazim
  • 16-06-2022, 11:01:47
    #3
    erbasaran adlı üyeden alıntı: mesajı görüntüle
    Hocam str_to_date arastir. Tuttugun stringi datetime a anlik cevirip datetime olarak karsilastirman lazim
    WHERE  ( tarih BETWEEN STR_TO_DATE($ilktarih, "%M %d %Y") and STR_TO_DATE($sontarih, "%M %d %Y") )
    gibi mi
  • 16-06-2022, 11:20:38
    #4
    Ben senin yerinde olsam, iki tane tarih kolonu acar string tarihleri buraya update eder, eski varchar kolonları silerdim.
    Tarih için string cok doğru bir yöntem olmadığı gibi başka sorgularda sana sorun çıkartabilir.
  • 16-06-2022, 12:34:06
    #5
    Aynı hatayı bende yapıyorum tarihi text olarak eklemek büyük hata sonra başımıza çok sorun açıyor.
    Daha sonra düzenlemek çok zor oluyor.
  • 16-06-2022, 12:37:34
    #6
    ntka adlı üyeden alıntı: mesajı görüntüle
    Aynı hatayı bende yapıyorum tarihi text olarak eklemek büyük hata sonra başımıza çok sorun açıyor.
    Daha sonra düzenlemek çok zor oluyor.
    hadi değiştirim. 16.06.2022 12:37 için varchar yerine datetime değeri ve ayarı tam nedir. örnek resim atabilirmisiniz
  • 16-06-2022, 12:55:57
    #7
    Benim kullandığım bunlar.
    int(11) olarak ayarlıyoruz.

    config dosyasına ekliyoruz.
    $date2 = array();
    $date2['timezone'] = 0;

    $date = build_date('Y-m-d H:i', $SQL kolon adı); // ekrana basmak için kullanıyoruz.

    Fonksiyon olarak kullanıyoruz.
    function build_date($dateformat, $udate, $mask = "")
        {
        global $date2,
        
        $udate = $udate + $date2['timezone'] * 3600;
        
        if (!empty($mask))
            {
            $mask = preg_replace('#\{(.+?)\}#isu', "{{".$udate."}{\$1}}", $mask);
            $result = preg_replace_callback('#\{\{(.+?)\}\{(.+?)\}\}#isu', create_function('$matches', 'return @date($matches[2], $matches[1]);'), $mask);
            return($result);
            }
    
        $result = @date($dateformat,     $udate);
        return($result);
        }
  • 18-06-2022, 10:24:27
    #8
    İhtiyacı olan varsa sorunu bu şekilde çözdük. (Tablo durumu date olmayan sorgular için)
    SELECT * FROM tabloadi WHERE (STR_TO_DATE(tarih_tablosu, '%d.%m.%Y %H:%i') BETWEEN STR_TO_DATE('03.05.2022 14:29', '%d.%m.%Y %H:%i') AND STR_TO_DATE('17.06.2022 17:03', '%d.%m.%Y %H:%i'))