Delphi Can
[ÇÖZÜLDÜ]Tarih ve Saat aralığı sorgulama - Baskı Önizleme

+- Delphi Can (https://www.delphican.com)
+-- Forum: Delphi (https://www.delphican.com/forumdisplay.php?fid=3)
+--- Forum: Genel Programlama (https://www.delphican.com/forumdisplay.php?fid=6)
+--- Konu Başlığı: [ÇÖZÜLDÜ]Tarih ve Saat aralığı sorgulama (/showthread.php?tid=3565)

Sayfalar: 1 2 3 4


[ÇÖZÜLDÜ]Tarih ve Saat aralığı sorgulama - shooterman - 18-04-2019

Arkadaşlar selamlar,

Daha önce burada sorduğum ve cevabını bulduğumuz bir konuda, tekrar hata yaşamaya başladım. MYSQL veitabanında olan datetime alanındaki verileri sorgularken, aşağıdaki kodu kullanıyorum

select * from tagverileri where tagadi='ALU_MUD_SAATLIK' and zaman between '2019-03-18' and '2019-04-18' AND DATE_FORMAT(zaman, '%H' ) BETWEEN '22:00:00' AND '06:00:00'

Ancak sorgu sonucu boş çıkıyor. Fakat sorgudaki saat aralığını tam tersine yaparsam
DATE_FORMAT(zaman, '%H' ) BETWEEN '06:00:00' AND '22:00:00'
bu şekilde raporlar geliyor. Fakat istediğim sonuç değil çünkü, 8 saatlik veri sorgulamam gerekirken, 16 saatlik veri sorguluyorum. Kodun doğru yazılımı konusunda yardımlarınızı rica ederim.


Cvp: Tarih ve Saat aralığı sorgulama - Tuğrul HELVACI - 18-04-2019

Ben MySQL'de uzman değilim ama DATE_FORMAT(, '%H') ile sadece saat bilgisini elde edip (Yani 13:45'in 13 'ünü) bu değerin '22:00' arasında olduğunu sorgulamak biraz garip değil mi ?


Tarih ve Saat aralığı sorgulama - Tuğrul HELVACI - 18-04-2019

Size TIME ya da HOUR fonksiyonlarını ihtiyacınıza göre kullanmanızı öneririm.


Cvp: Tarih ve Saat aralığı sorgulama - shooterman - 18-04-2019

(18-04-2019, Saat: 13:45)Tuğrul HELVACI Adlı Kullanıcıdan Alıntı: Ben MySQL'de uzman değilim ama DATE_FORMAT(, '%H') ile sadece saat bilgisini elde edip (Yani 13:45'in 13 'ünü) bu değerin '22:00' arasında olduğunu sorgulamak biraz garip değil mi ?

Sevgili Hocam,

verilerim bu şekilde kayıtlı olduğu için, bir enerji hesaplaması yapmam gerekiyor. Yani iki tarih aralığındaki, Akşam 22:00 ile sabah 06:00 aralığındaki verileri sorgulamam gerekiyor.

[attachment=568]


Tarih ve Saat aralığı sorgulama - esistem - 18-04-2019

Şu fonksiyonu kullanarak işlem yapablirsiniz sanırım

SELECT DATE_ADD('2011-12-31 23:59:59', INTERVAL '1:1' MINUTE_SECOND) # '2012-01-01 00:01:00'

yada;
SELECT DATE_ADD('2011-01-01 00:00:00', INTERVAL '-1 10' DAY_HOUR) # '2010-12-30 14:00:00'


Cvp: Tarih ve Saat aralığı sorgulama - shooterman - 18-04-2019

(18-04-2019, Saat: 14:10)esistem Adlı Kullanıcıdan Alıntı: Şu fonksiyonu kullanarak işlem yapablirsiniz sanırım

SELECT DATE_ADD('2011-12-31 23:59:59', INTERVAL '1:1' MINUTE_SECOND) # '2012-01-01 00:01:00'

yada;
SELECT DATE_ADD('2011-01-01 00:00:00', INTERVAL '-1 10' DAY_HOUR) # '2010-12-30 14:00:00'

Tam olarak bunu anlayamadığım için uygulayamadım Sad
benim yazmış olduğum koda bunu nasıl uygulayabiliriz?


Cvp: Tarih ve Saat aralığı sorgulama - esistem - 18-04-2019

(18-04-2019, Saat: 14:21)wiseman Adlı Kullanıcıdan Alıntı:
(18-04-2019, Saat: 14:10)esistem Adlı Kullanıcıdan Alıntı: Şu fonksiyonu kullanarak işlem yapablirsiniz sanırım

SELECT DATE_ADD('2011-12-31 23:59:59', INTERVAL '1:1' MINUTE_SECOND) # '2012-01-01 00:01:00'

yada;
SELECT DATE_ADD('2011-01-01 00:00:00', INTERVAL '-1 10' DAY_HOUR) # '2010-12-30 14:00:00'

Tam olarak bunu anlayamadığım için uygulayamadım Sad
benim yazmış olduğum koda bunu nasıl uygulayabiliriz?
SELECT * from tagverileri where tagadi='ALU_MUD_SAATLIK' and 
zaman>=DATE_ADD('2019-03-18 21:59:59', INTERVAL '1:1' MINUTE_SECOND) // çıktısı 2019-03-18 22:00:00 olmalı
and
zaman<=DATE_ADD('2019-03-18 22:00:00', INTERVAL '0 8' DAY_HOUR) // çıktısı 2019-03-19 06:00:00 olmalı 8 saat ekledik
sanırım yukardaki şekilde olmalı

tabi bu arada tablonuzda zaman alanı datetime olmalı


Cvp: Tarih ve Saat aralığı sorgulama - shooterman - 18-04-2019

(18-04-2019, Saat: 14:27)esistem Adlı Kullanıcıdan Alıntı:
(18-04-2019, Saat: 14:21)wiseman Adlı Kullanıcıdan Alıntı: Tam olarak bunu anlayamadığım için uygulayamadım Sad
benim yazmış olduğum koda bunu nasıl uygulayabiliriz?
SELECT * from tagverileri where tagadi='ALU_MUD_SAATLIK' and 
zaman>=DATE_ADD('2019-03-18 21:59:59', INTERVAL '1:1' MINUTE_SECOND) // çıktısı 2019-03-18 22:00:00 olmalı
and
zaman<=DATE_ADD('2019-03-18 22:00:00', INTERVAL '0 8' DAY_HOUR) // çıktısı 2019-03-19 06:00:00 olmalı 8 saat ekledik
sanırım yukardaki şekilde olmalı

tabi bu arada tablonuzda zaman alanı datetime olmalı
Yine olmadı hocam Sad

bir türlü 18.03.2019 saat 22:00 - 19:03:2019 saat 06:00 aralığındaki saat başı kaydettiğim verileri sorgulayamadım.


Tarih ve Saat aralığı sorgulama - esistem - 18-04-2019

yazdığımız kodun çıktısı ne oluyor peki? goruntusunu koysan buraya ? ayrıca date_add fonksiyonlarının çıktılarınıda kontrol etmen lazım


Cvp: Tarih ve Saat aralığı sorgulama - shooterman - 18-04-2019

(18-04-2019, Saat: 15:29)esistem Adlı Kullanıcıdan Alıntı: yazdığımız kodun çıktısı ne oluyor peki? goruntusunu koysan buraya ? ayrıca date_add fonksiyonlarının çıktılarınıda kontrol etmen lazım

Sizin kodun sonucunu buraya koydum

[attachment=569]

(18-04-2019, Saat: 13:45)Tuğrul HELVACI Adlı Kullanıcıdan Alıntı: Ben MySQL'de uzman değilim ama DATE_FORMAT(, '%H') ile sadece saat bilgisini elde edip (Yani 13:45'in 13 'ünü) bu değerin '22:00' arasında olduğunu sorgulamak biraz garip değil mi ?

Tuğrul Hocam,

datetime olan bir alandaki tarih ve saat şartına göre sorgulama yapmak için başka bir kod bulamadım. MYSQL olması önemli değil, elektrik sayacının gece saat 22:00 den sabah 06:00 ya kadar kayıt ettiği saat başı tüketimi sorgulayacağım. Sorunum bu. 10 günlük bir tarih aralığı verdiysem, 10 günlük saat 22.00 - 06:00 aralığındaki gece tüketimini sorgulmam gerekiyor.