En iyi yanıtlayıcılar
SQL 2 TARIH ARASI SORGU

Soru
-
MERHABA NVARCHAR VERI TIPINDE TARIH TUTMAKTAYIM VE 2 TARIH ARASINI GETIRMEK ISTIYORUM. FAKAT SORGUYU CALISTIRDIGIMDA ISTEDIGIM TARIH ARASI LISTELENMIYOR. RESIMDE GORULDUGU GIBI
- Düzenleyen Anıl Demirtaş 13 Nisan 2017 Perşembe 21:15
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.
- Yanıt Olarak İşaretleyen Anıl Demirtaş 14 Nisan 2017 Cuma 19:23
-
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- Yanıt Olarak İşaretleyen Anıl Demirtaş 14 Nisan 2017 Cuma 19:23
Tüm Yanıtlar
-
-
-
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ı
-
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')
-
-
Burada tanımladığım tarihle alakası olmayan tarih neden gelirki ?
- Düzenleyen Anıl Demirtaş 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.
- Yanıt Olarak İşaretleyen Anıl Demirtaş 14 Nisan 2017 Cuma 19:23
-
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- Yanıt Olarak İşaretleyen Anıl Demirtaş 14 Nisan 2017 Cuma 19:23