none
SQL 2 TARIH ARASI SORGU RRS feed

  • Soru

  • MERHABA NVARCHAR VERI TIPINDE TARIH TUTMAKTAYIM VE 2 TARIH ARASINI GETIRMEK ISTIYORUM. FAKAT SORGUYU CALISTIRDIGIMDA ISTEDIGIM TARIH ARASI LISTELENMIYOR. RESIMDE GORULDUGU GIBI
    13 Nisan 2017 Perşembe 18:07

Yanıtlar

  • dostum şuan bilgisayar başındayım, hızlıca bir düzenleme yaptım. Aşağıdaki şekilde bir çıktı aldım ben. Deneyebilir misin?

    Select * from (
    select '13.04.2017 09:12:36' TARIH
    Union All
    select '12.04.2017 19:12:36'
    Union All
    select '11.04.2017 03:12:36'
    Union All
    select '10.05.2017 04:12:36'
    Union All
    select '09.06.2017 15:12:36'
    Union All
    select '08.01.2017 13:12:36'
    ) AS  yok
    where CONVERT(datetime,yok.TARIH,105) between CONVERT(datetime,'12.04.2017',105) and CONVERT(datetime,'13.04.2017',105)

    kolay gelsin.

    14 Nisan 2017 Cuma 07:09
  • Merhabalar,

    Tarih verinizi NVARCHAR tutmanızda özel bir sebep var mıdır? Çünkü bu alan nvarchar olarak tutulduğunda sorgularken sizin yaşadığınız gibi sorunlar karşınıza çıkacaktır. Tavsiyem eğer mümkünse tarih alanını datetime vb bir veritipi seçerek tutmanız. Eğer illa nvarchar bir alanda tutma ihtiyacınız varsa da ayrı iki kolon oluşturup birinde nvarchar diğerinde datetime tutabilirsiniz. Böylece sorgularda filtrelerken datetime alanını kullanabilirsiniz. Üstelik performans olarak da bu seçenek daha faydalı olacaktır.

    Umarım faydalı olur...


    Please Mark This As Answer if it solved your issue
    Please Vote This As Helpful if it helps to solve your issue
    www.abdullahaltintas.com

    14 Nisan 2017 Cuma 07:25

Tüm Yanıtlar

  • Gördüğüm kadarıyla, tarih formatın hatalı olabilir. '2017-04-01 00:00:00' and '2017-04-13 23:59:59' şeklinde deneyebilir misin?
    13 Nisan 2017 Perşembe 19:20
  • ne yazikki bu şekilde hiç kayıt getirmedi
    13 Nisan 2017 Perşembe 19:23
  • yok.TARIH alanının datetime olduğuna emin misin? çünkü datetime türünden kaydettiğinde, "2017-01-15 00:00:00.000" şeklinde milisaniye de tutulması gerekiyor. 

    cast(yok.Tarih as DateTime) between '2017-04-01 00:00:00' and '2017-04-13 23:59:59'

    bu şekilde de deneyebilir misin?

    kolay gelsin.


    • Düzenleyen GüvenAslan 13 Nisan 2017 Perşembe 19:40 yazım hatası
    13 Nisan 2017 Perşembe 19:39
  • tekrar selam, sanırım sorunu buldum. nokta ayracıylsa tarihi tuttuğun için cast işlemi yanlış yapılıyor;

    cast('06.02.2017 10:03:24' as DateTime) = 2017-06-02 10:03:24.000

    yani ay ile gün yer değiştiriyor. Aşağıdaki şekilde dener misin?

    where convert(datetime,yok.TARIH) between  convert(datetime,'01.04.2017 00:00:00') and convert(datetime,'13.04.2017 23:59:59')

    13 Nisan 2017 Perşembe 19:49
  • bu şekildede işe yaramadı. bende gittim veritipini nvarchar'a çevirdim bu şekilde bir sorgu yapabilirmiyim
    13 Nisan 2017 Perşembe 20:10
  • Burada tanımladığım tarihle alakası olmayan tarih neden gelirki ?


    13 Nisan 2017 Perşembe 20:38
  • dostum şuan bilgisayar başındayım, hızlıca bir düzenleme yaptım. Aşağıdaki şekilde bir çıktı aldım ben. Deneyebilir misin?

    Select * from (
    select '13.04.2017 09:12:36' TARIH
    Union All
    select '12.04.2017 19:12:36'
    Union All
    select '11.04.2017 03:12:36'
    Union All
    select '10.05.2017 04:12:36'
    Union All
    select '09.06.2017 15:12:36'
    Union All
    select '08.01.2017 13:12:36'
    ) AS  yok
    where CONVERT(datetime,yok.TARIH,105) between CONVERT(datetime,'12.04.2017',105) and CONVERT(datetime,'13.04.2017',105)

    kolay gelsin.

    14 Nisan 2017 Cuma 07:09
  • Merhabalar,

    Tarih verinizi NVARCHAR tutmanızda özel bir sebep var mıdır? Çünkü bu alan nvarchar olarak tutulduğunda sorgularken sizin yaşadığınız gibi sorunlar karşınıza çıkacaktır. Tavsiyem eğer mümkünse tarih alanını datetime vb bir veritipi seçerek tutmanız. Eğer illa nvarchar bir alanda tutma ihtiyacınız varsa da ayrı iki kolon oluşturup birinde nvarchar diğerinde datetime tutabilirsiniz. Böylece sorgularda filtrelerken datetime alanını kullanabilirsiniz. Üstelik performans olarak da bu seçenek daha faydalı olacaktır.

    Umarım faydalı olur...


    Please Mark This As Answer if it solved your issue
    Please Vote This As Helpful if it helps to solve your issue
    www.abdullahaltintas.com

    14 Nisan 2017 Cuma 07:25