Şimdi Ara

Oracle da boş olan saat aralıklarını getirmek

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
1 Misafir - 1 Masaüstü
5 sn
5
Cevap
0
Favori
571
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • Arkadaşlar merhaba, yapmam gereken bir poliklinik randevu ekranı var.



    benden istenen, randevu tablosunda bulunan randevu tarihlerini, 08:00 ve 17:00 saatleri arasından çıkararak

    tüm boş zamanları dakika cinsinden getirmek ve hangi saatler arasında randevu verilebileceğini görüntülemek.



    (örnek vermem gerekirse saat 9.30 da 10 dk lık bir randevum olsun diğer randevum da saat 10.45 te yine 10 dk lık olsun

    bana bu sorgunun saat 08.00 ile 9.30 arasındaki başlangıç, bitiş zamanı ve arada kalan dakikasını,

    09.40 ile 10.45 arasındaki başlangıç, bitiş zamanı ve arada kalan dakikasını,

    ve 10.55 ten 17.00 a kadar olan süreyi vermesi gerekiyor.)



    kolonlar

    randevuBaslangicTarihi , randevuBitisTarihi

    11.03.2013 09:30:00 , 11.03.2013 09:40:00

    11.03.2013 10:45:00 , 11.03.2013 10:55:00



    istediğim dönüş tipi:

    aralik , dakika

    08:00:00 - 09:30:00 , 90

    09:40:00 - 10:45:00 , 65

    10:55:00 - 17:00:00 , 365





    select (t.bitis - t.baslangic) * 1440 as aralik from KOD_RANDEVU_SAAT_PROFIL_DETAY t

    where t.baslangic between to_date('11.03.2011 08:00:00', 'dd-mm-yyyy hh24:mi:ss')

    and TO_DATE('11.03.2011 17:00:00', 'dd-mm-yyyy hh24:mi:ss') order by t.baslangic asc



    bu sorgu bana var olan kayıtların tarih farkını getiriyor ama istediğim bu değil dışında kalan aralıklar.

    not exists ile çözmeye çalıştım ama ya olmuyor yada ben beceremedim.



    bana bir çözüm yolu üretirseniz çok sevinirim.

    şimdiden yardımlarınız için çok teşekkür ederim.



    < Bu mesaj bu kişi tarafından değiştirildi alix12 -- 16 Aralık 2013; 14:22:08 >







  • Bunu cursor ile kolayca halledersin.Randevunu bulduktan sonra otede ve geride olanlara bakıp aradaki farkı ve zamanı alabilirsin.Bu trarz bir calısmam vardı kodlarını aşagıda MSSQL için ama oracle benzer olmalı

    DECLARE @ID int
    DECLARE @Adr nchar(100)
    DECLARE @Ys int

    DECLARE Sec CURSOR SCROLL FOR
    SELECT ID,Adres,Yaş FROM Kisi



    OPEN Sec

    FETCH NEXT FROM Sec INTO @ID,@Adr,@Ys

    WHILE (@@FETCH_STATUS=0)
    BEGIN
    BEGIN TRY
    IF(@Adr LIKE '%555%')
    BEGIN
    PRINT @Adr
    UPDATE Kisi
    SET Yaş=0
    WHERE ID=@ID

    FETCH PRIOR FROM Sec INTO @ID,@Adr,@Ys
    UPDATE Kisi
    SET Yaş=0
    WHERE ID=@ID

    FETCH RELATIVE 2 FROM Sec INTO @ID,@Adr,@Ys
    UPDATE Kisi
    SET Yaş=0
    WHERE ID=@ID


    END
    FETCH NEXT FROM Sec INTO @ID,@Adr,@Ys
    END TRY
    BEGIN CATCH
    PRINT 'İŞLEM SONU'
    END CATCH
    END
     Oracle da boş olan saat aralıklarını getirmek




  • fsh77 kullanıcısına yanıt
    hocam yardımın için teşekkür ederim. nette cursor u araştırdım ama istediğimi yapamadım.
    başka bir yolu yok mu bunun ?
  • cursor ile yaparsın bunu, mantığın şu olucak,randevuyu görünce bir ilerisinde ve bir gerisindeli randevuya bakıcaksın benimdekinde update var sen sadece degerlerleri alıcan hepsini gecici bir tabloya insert edip ordan bilgileri cekersin yapamıyorum dersen ufak bir ücret karsılıgı yapıp veririm sana.
  • yok hocam sağol önerin için ama kendim yapmaya çalışırım.
    yardımın için teşekkürler
  • Yapay Zeka’dan İlgili Konular
    Daha Fazla Göster
    
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.