Yorumları: 858
Konuları: 35
Kayıt Tarihi: 12-08-2016
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 3.731 Uzman
(22-04-2019, Saat: 10:06)wiseman Adlı Kullanıcıdan Alıntı: (21-04-2019, Saat: 21:56)mcuyan Adlı Kullanıcıdan Alıntı: 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
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
Yorumları: 670
Konuları: 73
Kayıt Tarihi: 20-12-2018
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 1.544 Programcı
(22-04-2019, Saat: 10:22)esistem Adlı Kullanıcıdan Alıntı: (22-04-2019, Saat: 10:06)wiseman Adlı Kullanıcıdan Alıntı: 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
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
Yazılımcı, kahveyi koda çeviren bir organizmadır.
Yorumları: 1.664
Konuları: 20
Kayıt Tarihi: 05-08-2016
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 19.042 Üstad
22-04-2019, Saat: 10:47
(Son Düzenleme: 22-04-2019, Saat: 10:50, Düzenleyen: mrmarman.)
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
Yorumları: 858
Konuları: 35
Kayıt Tarihi: 12-08-2016
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 3.731 Uzman
22-04-2019, Saat: 11:06
(Son Düzenleme: 22-04-2019, Saat: 11:17, Düzenleyen: esistem.)
(22-04-2019, Saat: 10:35)wiseman Adlı Kullanıcıdan Alıntı: (22-04-2019, Saat: 10:22)esistem Adlı Kullanıcıdan Alıntı: 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
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 o zaman yapacak tek şey olarak, daha önce yazdığımız gibi her gün için ayrı ayrı sorgu üretmek kalıyor
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
Yorumları: 670
Konuları: 73
Kayıt Tarihi: 20-12-2018
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 1.544 Programcı
(22-04-2019, Saat: 10:47)mrmarman Adlı Kullanıcıdan Alıntı: 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.
Yazılımcı, kahveyi koda çeviren bir organizmadır.
Yorumları: 1.664
Konuları: 20
Kayıt Tarihi: 05-08-2016
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 19.042 Üstad
22-04-2019, Saat: 18:06
(Son Düzenleme: 22-04-2019, Saat: 19:54, Düzenleyen: mrmarman.
Sebep: Not eklendi..
)
Değişken de olsa SELECT satırlarını DELPHI yakasında hazırlıyorsan, şöyle bir şey denemek ister misiniz.
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
Yorumları: 1.381
Konuları: 75
Kayıt Tarihi: 20-03-2017
Aktif Kullandığınız Delphi Sürümü:
- Delphi 10.3
- Delphi 10.2
- Delphi 7
- Lazarus / FPC
Rep Puanı: 3.853 Uzman
(22-04-2019, Saat: 10:06)wiseman Adlı Kullanıcıdan Alıntı: (21-04-2019, Saat: 21:56)mcuyan Adlı Kullanıcıdan Alıntı: 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..
Yorumları: 670
Konuları: 73
Kayıt Tarihi: 20-12-2018
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 1.544 Programcı
(22-04-2019, Saat: 18:06)mrmarman Adlı Kullanıcıdan Alıntı: Değişken de olsa SELECT satırlarını DELPHI yakasında hazırlıyorsan, şöyle bir şey denemek ister misiniz.
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
Yazılımcı, kahveyi koda çeviren bir organizmadır.
Yorumları: 1.571
Konuları: 88
Kayıt Tarihi: 09-08-2016
Rep Puanı: 13.829 Üstad
23-04-2019, Saat: 12:18
(Son Düzenleme: 23-04-2019, Saat: 12:33, Düzenleyen: SimaWB.)
@ 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ı: 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
Yorumları: 670
Konuları: 73
Kayıt Tarihi: 20-12-2018
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 1.544 Programcı
(23-04-2019, Saat: 12:18)SimaWB Adlı Kullanıcıdan Alıntı: @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ı: 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.
Yazılımcı, kahveyi koda çeviren bir organizmadır.
|