Haftanın birinci günü ve c.tesi arasındaki kayıtları bulma

MS SQL Server veritabanı ve SQL komutlarıyla ilgli sorularınızı sorabilirsiniz. Delphi tarafındaki sorularınızı lütfen Programlama forumunda sorunuz.
Cevapla
eyalin
Üye
Mesajlar: 126
Kayıt: 09 May 2005 08:08

Haftanın birinci günü ve c.tesi arasındaki kayıtları bulma

Mesaj gönderen eyalin »

Merhabalar herkese kolay gelsin.Yapmak istediğim tarih alanımdaki tarihe göre haftanın p.tesi ve cumartesi günleri arasındaki kayıtları listelemek.Delphi tarafında çalışma gününü bulan fonksiyonları okudum.Fakat benim yapmak istediğim mssql tarafında

Kod: Tümünü seç

select * from randevu where [TARIH] between DATEPART(dw,2) AND DATEPART(dw,6)
gibi bi sorgu ile bu hafta pazartesi ve cumartesi arasındaki randevuları listelemek istiyorum.Yukarda yazdığım sorguda query analizer da bir hata almıyorum fakat herhangi bir sonuçta dönmüyor.Oysaki pazartesi ve salı günleri toplam iki randevu var.Yani özetle pazartesi ve cumartesi arasındaki kayıtları bir sql cümlesi ile almak istiyorum fakat bu sorgu şu tarihle şu tarih arası şeklinde bir sorgu değil haftanın çalışma günleri gibi bir mantıkta olacak..Herkese kolay gelsin.Şimdiden teşekkürler.
Kullanıcı avatarı
conari
Üye
Mesajlar: 2102
Kayıt: 27 Nis 2006 03:10
Konum: İstanbul & Gebze Karışık

Re: Haftanın birinci günü ve c.tesi arasındaki kayıtları bulma

Mesaj gönderen conari »

Bir kelimenin anlamını öğretsen bile yeter..
ResimResim
eyalin
Üye
Mesajlar: 126
Kayıt: 09 May 2005 08:08

Re: Haftanın birinci günü ve c.tesi arasındaki kayıtları bulma

Mesaj gönderen eyalin »

Maalesef henüz çözemedim.Yanıt için teşekkürler...
Kullanıcı avatarı
conari
Üye
Mesajlar: 2102
Kayıt: 27 Nis 2006 03:10
Konum: İstanbul & Gebze Karışık

Re: Haftanın birinci günü ve c.tesi arasındaki kayıtları bulma

Mesaj gönderen conari »

Kod: Tümünü seç

SET DATEFIRST 1
SELECT * from tablo 
where DATEPART(week,tarih) = DATEPART(week, getdate()) --Hafta bu haftaya eşit
and DATEPART(dw,tarih) between DATEPART(dw,1) and DATEPART(dw,6) --Bu günler aralığında
order by tarih
Bir kelimenin anlamını öğretsen bile yeter..
ResimResim
Kullanıcı avatarı
sabanakman
Kıdemli Üye
Mesajlar: 3081
Kayıt: 17 Nis 2006 08:11
Konum: Ah bi Antalya olaydı keşke (Ankara)

Re: Haftanın birinci günü ve c.tesi arasındaki kayıtları bulma

Mesaj gönderen sabanakman »

Tarihin hangi güne geldiğini bulan sorgudan sorman gerek.

Kod: Tümünü seç

select * from randevu where DATEPART(dw,[TARIH]) between 2 AND 6
yazmalısın. Ayrıca pazar olmayan günler diye bir sorgu da önerebilirim.

Kod: Tümünü seç

select * from randevu where DATEPART(dw,[TARIH])<>1
gibi.
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
eyalin
Üye
Mesajlar: 126
Kayıt: 09 May 2005 08:08

Re: Haftanın birinci günü ve c.tesi arasındaki kayıtları bulma

Mesaj gönderen eyalin »

Sevgili conari ve sabanakman yanıtlarınız için çok teşekkürler.İlginç birşey oluyor ya da bana öyle geldi :) .Tablomdaki veriler:
Tarih----------------RandevuyuVeren
27.10.2008---------Ahmet
28.10.2008---------Mehmet
29.10.2008---------Ali
diye üç adet kayıt var ve verdiğin kodu çalıştırdığım zaman
conari yazdı:

Kod: Tümünü seç

SET DATEFIRST 1
SELECT * from tablo 
where DATEPART(week,tarih) = DATEPART(week, getdate()) --Hafta bu haftaya eşit
and DATEPART(dw,tarih) between DATEPART(dw,1) and DATEPART(dw,6) --Bu günler aralığında
order by tarih
Sadece 28.10.2008 ve 29.10.2008 tarihli iki kayıt gelirken 27.10.2008 (Pazartesi) tarihli kayıt gelmemekte idi.Bende kodu

Kod: Tümünü seç

SET DATEFIRST 1
SELECT * from tablo 
where DATEPART(week,tarih) = DATEPART(week, getdate()) --Hafta bu haftaya eşit
and DATEPART(dw,tarih) between DATEPART(dw,***0***) and DATEPART(dw,6) --Bu günler aralığında
order by tarih
olarak değiştirdim ve 27.10.2008 tarihli kayıtda göründü.Fakat bana tuhaf gelen DATEPART'ın "0" değerini alması.Yani sql helpte 1 den 7 ye kadar gün değerleri var diye görüyorum.Bu tuhaf değil mi?

Tekrar tekrar teşekkürler :)
Cevapla