Çok Yakında Yeni Bir Arayüzle karşınızdayız! http://yeni.delphican.com/

Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
[ÇÖZÜLDÜ]Tarih ve Saat aralığı sorgulama
#31
(22-04-2019, Saat: 10:06)wiseman Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.
(21-04-2019, Saat: 21:56)mcuyan Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.Hocam dedğiniz yapabiliyorum. Yani o gün içinde x saat ile y saat arasını.. Cidden neresinin çalışmadığını anlamadım..

Selamlar
@esistem  üstadığımızın dediği gibi,  saat aralığı 01:00 - 03:00 olursa zaten yazdığınız kod doğru çalışıyor sorun yok.
Sorun bir önceki akşamın saat 21:00 - ertesi gün 03:00 arasındaki sorguyu aldığınızda çıkıyor ortaya.

verilen kısıtta gün değişimi olduğu için, raporu alamıyorsunuz. Keşke bana bir bağlanma şansınız olsa da ben size sorunu direkt gösterebilsem hocam. Sorunun ne olduğunu görebileceksiniz.
Ancak Aşağıdaki şekilde çözülüyor @wiseman ;
Önce tarih aralığı sonra da zaman damgasını yazmanız gerekiyor, başka türlü çözemedim Sad
yalnız istenen saat 00:00 'ı geçiyorsa bir sonraki tarihi yazmanız gerekli 2. ZAMAN sorgusu satırında
SELECT DATE( ZAMAN ) AS TARIH, TIME( ZAMAN ) AS SAAT, DEGER
FROM test
WHERE DATE( ZAMAN ) >=  '2019-04-18'
AND DATE( ZAMAN ) <=  '2019-04-19'
AND 
(
( TIME( zaman ) >=  '22:00:00' AND TIME( zaman ) <=  '23:00:02' )
OR 
( TIME( zaman ) >=  '00:00:00' AND TIME( zaman ) <=  '02:00:02' )
)
ORDER BY TARIH, SAAT
Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.
WWW
Cevapla
#32
(22-04-2019, Saat: 10:22)esistem Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.
(22-04-2019, Saat: 10:06)wiseman Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.Selamlar
@esistem  üstadığımızın dediği gibi,  saat aralığı 01:00 - 03:00 olursa zaten yazdığınız kod doğru çalışıyor sorun yok.
Sorun bir önceki akşamın saat 21:00 - ertesi gün 03:00 arasındaki sorguyu aldığınızda çıkıyor ortaya.

verilen kısıtta gün değişimi olduğu için, raporu alamıyorsunuz. Keşke bana bir bağlanma şansınız olsa da ben size sorunu direkt gösterebilsem hocam. Sorunun ne olduğunu görebileceksiniz.
Ancak Aşağıdaki şekilde çözülüyor @wiseman ;
Önce tarih aralığı sonra da zaman damgasını yazmanız gerekiyor, başka türlü çözemedim Sad
yalnız istenen saat 00:00 'ı geçiyorsa bir sonraki tarihi yazmanız gerekli 2. ZAMAN sorgusu satırında
SELECT DATE( ZAMAN ) AS TARIH, TIME( ZAMAN ) AS SAAT, DEGER
FROM test
WHERE DATE( ZAMAN ) >=  '2019-04-18'
AND DATE( ZAMAN ) <=  '2019-04-19'
AND 
(
( TIME( zaman ) >=  '22:00:00' AND TIME( zaman ) <=  '23:00:02' )
OR 
( TIME( zaman ) >=  '00:00:00' AND TIME( zaman ) <=  '02:00:02' )
)
ORDER BY TARIH, SAAT

@esistem

Sorgunuzdaki saati 06:00 olarak değiştirerek aldım raporu. 18.03.2019 da istenmeyen saat aralığı da geliyor. 

2019-03-18    00:00:02    6800
2019-03-18    01:00:02    6800
2019-03-18    02:00:02    6800
2019-03-18    03:00:02    6800
2019-03-18    04:00:02    6800
2019-03-18    05:00:02    6800
2019-03-18    06:00:02    6800
2019-03-18    22:00:02    6800
2019-03-18    23:00:02    6800
2019-03-19    00:00:02    6800
2019-03-19    01:00:02    6800
2019-03-19    02:00:02    6800
2019-03-19    03:00:02    6800
2019-03-19    04:00:02    6800
2019-03-19    05:00:02    6800
2019-03-19    06:00:02    6800
2019-03-19    22:00:02    6800
2019-03-19    23:00:02    6800
Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.
Cevapla
#33
WHERE kısmına CASE WHEN saat şu aralıkta değilse NULL ELSE tarih END denediniz mi
bir altta da null olanları filterele tabii
Saygılarımla
Muharrem ARMAN

guplouajuixjzfm15eqb.gif


Cevapla
#34
(22-04-2019, Saat: 10:35)wiseman Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.
(22-04-2019, Saat: 10:22)esistem Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.Ancak Aşağıdaki şekilde çözülüyor @wiseman ;
Önce tarih aralığı sonra da zaman damgasını yazmanız gerekiyor, başka türlü çözemedim Sad
yalnız istenen saat 00:00 'ı geçiyorsa bir sonraki tarihi yazmanız gerekli 2. ZAMAN sorgusu satırında
SELECT DATE( ZAMAN ) AS TARIH, TIME( ZAMAN ) AS SAAT, DEGER
FROM test
WHERE DATE( ZAMAN ) >=  '2019-04-18'
AND DATE( ZAMAN ) <=  '2019-04-19'
AND 
(
( TIME( zaman ) >=  '22:00:00' AND TIME( zaman ) <=  '23:00:02' )
OR 
( TIME( zaman ) >=  '00:00:00' AND TIME( zaman ) <=  '02:00:02' )
)
ORDER BY TARIH, SAAT

@esistem

Sorgunuzdaki saati 06:00 olarak değiştirerek aldım raporu. 18.03.2019 da istenmeyen saat aralığı da geliyor. 

2019-03-18    00:00:02    6800
2019-03-18    01:00:02    6800
2019-03-18    02:00:02    6800
2019-03-18    03:00:02    6800
2019-03-18    04:00:02    6800
2019-03-18    05:00:02    6800
2019-03-18    06:00:02    6800
2019-03-18    22:00:02    6800
2019-03-18    23:00:02    6800
2019-03-19    00:00:02    6800
2019-03-19    01:00:02    6800
2019-03-19    02:00:02    6800
2019-03-19    03:00:02    6800
2019-03-19    04:00:02    6800
2019-03-19    05:00:02    6800
2019-03-19    06:00:02    6800
2019-03-19    22:00:02    6800
2019-03-19    23:00:02    6800

bu çıktının sorgusu nedir tam olarak ?

anladım, bu seferde bir önceki günü sokuyor döngüye Sad o zaman yapacak tek şey olarak, daha önce yazdığımız gibi her gün için ayrı ayrı sorgu üretmek kalıyor Sad

o zamansa şöyle bir sorgu olmalı, başlangıç ve bitişi tam zaman damgası olarak vermelisiniz. sonra saat damgalarını yazmalısınız
SELECT DATE( ZAMAN ) AS TARIH, TIME( ZAMAN ) AS SAAT, DEGER
FROM test
WHERE ZAMAN >=  '2019-04-19 05:00:00'
AND ZAMAN <=  '2019-04-21 02:00:00'
AND (
(
TIME( zaman ) >=  '05:00:00'
AND TIME( zaman ) <=  '23:00:02'
)
OR (
TIME( zaman ) >=  '00:00:00'
AND TIME( zaman ) <=  '02:00:02'
)
)
ORDER BY TARIH, SAAT
Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.
WWW
Cevapla
#35
(22-04-2019, Saat: 10:47)mrmarman Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.WHERE kısmına CASE WHEN saat şu aralıkta değilse NULL  ELSE tarih END denediniz mi
bir altta da null olanları filterele tabii

Muharrem Hocam,

Saat aralığı, kullanıcı tarafından rapor alınırken belirlendiği için, case kullanamıyorum. 3 farklı saat aralıkları kullanıyorlar ve hepsi de değişken. Elektrik sayacının değerleri bunlar. Sad
Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.
Cevapla
#36
Değişken de olsa SELECT satırlarını DELPHI yakasında hazırlıyorsan, şöyle bir şey denemek ister misiniz. 

Idea  IN kısmını siz kullanıcı girişine göre değiştirebilirsiniz.

SELECT * FROM test
WHERE 1=1
AND zaman BETWEEN '2019-03-18' and '2019-03-20' 
AND DATE_FORMAT(zaman,'%H') IN ('22', '23', '00', '01', '02', '03', '04', '05', '06')
ORDER by zaman

NOT : Merak edenler olabilir. BETWEEN kullanırken son tarih hariç hesaplanır. Örnekte 19'u isteniyorsa 20 denmesinin sebebi bu.
Saygılarımla
Muharrem ARMAN

guplouajuixjzfm15eqb.gif


Cevapla
#37
(22-04-2019, Saat: 10:06)wiseman Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.
(21-04-2019, Saat: 21:56)mcuyan Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.Hocam dedğiniz yapabiliyorum. Yani o gün içinde x saat ile y saat arasını.. Cidden neresinin çalışmadığını anlamadım..

Selamlar
@esistem  üstadığımızın dediği gibi,  saat aralığı 01:00 - 03:00 olursa zaten yazdığınız kod doğru çalışıyor sorun yok.
Sorun bir önceki akşamın saat 21:00 - ertesi gün 03:00 arasındaki sorguyu aldığınızda çıkıyor ortaya.

verilen kısıtta gün değişimi olduğu için, raporu alamıyorsunuz. Keşke bana bir bağlanma şansınız olsa da ben size sorunu direkt gösterebilsem hocam. Sorunun ne olduğunu görebileceksiniz.
Haa Pardon şimdi anladım.. PArdon.
// Bilgi paylaştıkça çoğalır.. 

Cevapla
#38
(22-04-2019, Saat: 18:06)mrmarman Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.Değişken de olsa SELECT satırlarını DELPHI yakasında hazırlıyorsan, şöyle bir şey denemek ister misiniz. 

Idea  IN kısmını siz kullanıcı girişine göre değiştirebilirsiniz.

SELECT * FROM test
WHERE 1=1
AND zaman BETWEEN '2019-03-18' and '2019-03-20' 
AND DATE_FORMAT(zaman,'%H') IN ('22', '23', '00', '01', '02', '03', '04', '05', '06')
ORDER by zaman

NOT : Merak edenler olabilir. BETWEEN kullanırken son tarih hariç hesaplanır. Örnekte 19'u isteniyorsa 20 denmesinin sebebi bu.

Sevgili Muharrem Hocam,

Bu şekilde çalıştı. Yine derdime çare oldunuz. @esistem , @mcuyan  sizlere de çok teşekkür ederim. Çok uğraştırdım sizleri. @Fesih ARSLAN hocam, bir daha kitabı yanımdan ayırırmam tövbeee  Smile
Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.
Cevapla
#39
@wiseman, aşağıdaki MSSQL sorgusunun işinize yaradığını yazmışsınız:

(18-04-2019, Saat: 23:37)wiseman Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.
select * from tagdegerleri 
WHERE (zaman BETWEEN '2019-03-18' AND '2019-03-20')
AND (convert(varchar, zaman, 24) > '22:00:00' or convert(varchar, zaman, 24) < '06:00:00')


Bence bunun MYSQL karşılığı şöyle:
SELECT * FROM tagdegerleri 
WHERE (zaman BETWEEN '2019-03-18' AND '2019-03-20')
AND (
 DATE_FORMAT(zaman,'%H:%i:%s') > '22:00:00' OR DATE_FORMAT(zaman,'%H:%i:%s') < '06:00:00');
There's no place like 127.0.0.1
WWW
Cevapla
#40
(23-04-2019, Saat: 12:18)SimaWB Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.@wiseman, aşağıdaki MSSQL sorgusunun işinize yaradığını yazmışsınız:

(18-04-2019, Saat: 23:37)wiseman Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.
select * from tagdegerleri 
WHERE (zaman BETWEEN '2019-03-18' AND '2019-03-20')
AND (convert(varchar, zaman, 24) > '22:00:00' or convert(varchar, zaman, 24) < '06:00:00')


Bence bunun MYSQL karşılığı şöyle:
SELECT * FROM tagdegerleri 
WHERE (zaman BETWEEN '2019-03-18' AND '2019-03-20')
AND (
 DATE_FORMAT(zaman,'%H:%i:%s') > '22:00:00' OR DATE_FORMAT(zaman,'%H:%i:%s') < '06:00:00');

Selamlar,

MSSQL de bu şekilde yazdığımda gerekli sonucu elde ettim. Aynı şekilde sizin yazdığınız da çalışmaktadır. İlginize teşekkür ederim. Smile
Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  [ÇÖZÜLDÜ] dbdatetine wiseman 4 99 3 saat önce
Son Yorum: wiseman
  SQl tarih Sorunu Bay_Y 7 231 11-11-2019, Saat: 09:06
Son Yorum: Bay_Y
  ÇÖZÜLDÜ-dikdörtgen alanın resim pixel renk değerlerini okuma sadikacar60 2 154 29-10-2019, Saat: 14:48
Son Yorum: sadikacar60
  İlişkili Combobox (Çözüldü) bünyamin68 11 404 23-10-2019, Saat: 11:02
Son Yorum: bünyamin68
  [ÇÖZÜLDÜ] Rapor Baskısında 0 değerleri yazılmasın wiseman 2 148 01-10-2019, Saat: 18:04
Son Yorum: wiseman



Konuyu Okuyanlar: 1 Ziyaretçi