iki saat arası sorgulama sorunu

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
Kullanıcı avatarı
mustafasoy
Üye
Mesajlar: 154
Kayıt: 02 Ağu 2013 05:00
Konum: istanbul
İletişim:

iki saat arası sorgulama sorunu

Mesaj gönderen mustafasoy »

çok araştırdım ancak tatmin edici bir sonuca ulaşamadım
sql server tarafında bir function yaptım ancak saat arası sorguda sorun çıkardığından istediğimi net olarak elde edemiyorum
vardiya tablom var
vbas vbit tanim
08:00:00 19:30:00 1.vardiya
20:00:00 07:30:00 2.vardiya
üretim bitişlerini elde ettiğim başka bir tablom var
bu bitişler içerisinden sadece saat bilgisini alarak
hangi vardiya arasında bittiğini tespit etmek istiyorum

1.vardiya arasında bitişleri doğru gösteriyor ancak
2.vardiya için sonuç gelmiyor
fonksiyon içinde kullandığım sorgum

declare @xx varchar(8)='08:31:00'
set @xx= CAST(@xx as time(7))
select Tanim from vardiya
where @xx between cast(CONVERT(varchar(50),vbas,108)as time(7)) and cast(CONVERT(varchar(50),vbit,108)as time(7))
---------------------

bu sonuç getirmiyor sorunun ikinci vardiyanin bitişi ertesi gün olduğundan baslangıç saati bitiş saatinden büyük bu sebepten mi getirmiyor?
declare @xx varchar(8)='20:31:00'
set @xx= CAST(@xx as time(7))
select Tanim from vardiya
where @xx between cast(CONVERT(varchar(50),vbas,108)as time(7)) and cast(CONVERT(varchar(50),vbit,108)as time(7))

bu sorunun üstesinden nasıl gelebilirim
Nasıl ki Soru sorarak öğrendiyseniz , öğrendiklerinizi cevap vererek öğretiniz.
mkysoft
Kıdemli Üye
Mesajlar: 3110
Kayıt: 26 Ağu 2003 12:35
Konum: Berlin
İletişim:

Re: iki saat arası sorgulama sorunu

Mesaj gönderen mkysoft »

OR kullaranak yapmanız mümkün olabilir. Öncelikle vardiyanın başlangıcının bitişinden küçük olup olmadığını kontrol edeniz.
(baslangic > bitis AND tarih between baslangic and bitis) OR (baslangic < bitis AND (tarih between baslangic AND '23:59:59' OR bitis between '00:00:00' AND bitis )
Cevapla