![]() |
|
Tarih Fark İşlemleri - Baskı Önizleme +- Delphi Can (https://www.delphican.com) +-- Forum: Veri Tabanı (https://www.delphican.com/forumdisplay.php?fid=4) +--- Forum: MySQL (https://www.delphican.com/forumdisplay.php?fid=14) +--- Konu Başlığı: Tarih Fark İşlemleri (/showthread.php?tid=671) Sayfalar:
1
2
|
Tarih Fark İşlemleri - yhackup - 14-02-2017 Merhabalar, MySQL'de tarih işlemleri ile uğraşıyorum. bir sorum var. bazı fonksiyonlar kullandım ama tam istediğim veri için iş görmedi fikir alayım sizden Cümlem bu, alanlar datetime tipinde. SELECT jobs.gtarih, jobs.ctarih, DATEDIFF(ctarih, gtarih) AS DATEDIFF, TIMEDIFF(ctarih, gtarih) AS TIMEDIFF, TIMESTAMPDIFF(HOUR, gtarih, ctarih) AS TIMESTAMPDIFF_HOUR, TIMESTAMPDIFF(MINUTE, gtarih, ctarih) AS TIMESTAMPDIFF_MINUTE, SEC_TO_TIME((TIMESTAMPDIFF(MINUTE, gtarih, ctarih) * 60) * 60) as SEC_TO_TIME FROM jobs Sonuçlar ise bu şekilde, ![]() Tam olarak şunu istiyorum, iki tarih arasında gün, saat, dakika farkı ilk iki kayıtta TIMEDIFF işimi gördü, ama fark günden fazla olunca TIMEDIFF çalışmıyor. dakikadan saat ve günü bulayım dedim (SEC_TO_TIME ile) o da olmadı Tarih Fark İşlemleri - esistem - 14-02-2017 Hocam böyle bir durumda stored proc. yazmıştım, giriş ve çıkış tarihi aynı ise saat farkını alıyosun, eğer farklı ise cikis>giris tarihi ise giristarihi+23:59:00 dan giris saatini çıkartıp, cikistarihi içinde 00:00:00 dan çıkış saatini çıkartıp toplatıp mesai saatini buluyodum, sende böyle bişi yapmaya mecbursun sanırım. Cvp: Tarih Fark İşlemleri - yhackup - 14-02-2017 Öyle gibi görünüyor olmadı onu da delphi tarafına bırakırım ![]() Ama Google de arattığımda, bir kaç yerde bu fonksiyonun doğru çalıştığını gördüm, nereyi atlıyoruz acaba Örnek Bir yazı, Alıntı:Timediff() fonksiyonu iki tarih arasındaki farkı saat cinsinden döndürür demiştik. Eğer iki tarih arasında gün farkı varsa sonuç yine saat olarak dönecektir. Sorgu sonucunda 2 gün timediff fonksiyonu için 48 saat demektir. Tarih Fark İşlemleri - SimaWB - 14-02-2017 Sanırım TIMEDIFF fonksiyonu %Y-%m-%d %h:%i:%s formatında bir tarih istiyor. O yüzden önce DATE_FORMAT ile format değişikliği yaparsanız çalışır diye tahmin ediyorum Cvp: Tarih Fark İşlemleri - yhackup - 15-02-2017 (14-02-2017, Saat: 17:48)SimaWB Adlı Kullanıcıdan Alıntı: Sanırım TIMEDIFF fonksiyonu %Y-%m-%d %h:%i:%s formatında bir tarih istiyor. O yüzden önce DATE_FORMAT ile format değişikliği yaparsanız çalışır diye tahmin ediyorum Maalesef TIMEDIFF(DATE_FORMAT(ctarih,'%Y-%m-%d %H:%i:%s'), DATE_FORMAT(gtarih,'%Y-%m-%d %H:%i:%s')) Bu dekilde denediğimde de doğru çalışmadı abi, select timediff('2017-02-22 08:41:00', '2017-02-24 18:41:00'); Bu da hatalı hesaplıyor. mysql versiyonunda değişti mi acaba, mutlaka bir çözümü olmalı bunun. Tarih Fark İşlemleri - SimaWB - 15-02-2017 select timediff('2017-02-22 08:41:00', '2017-02-24 18:41:00');
Bende -58:00:00 çıktı ki doğru gibi..MySQL 5.5 Tarih Fark İşlemleri - esistem - 15-02-2017 Yakup hocam sendeki DATE_FORMAT(ctarih,'%Y-%m-%d %H:%i:%s') ekrana ne basıyor belki onda bi farklılık vardır. Tarih Fark İşlemleri - SimaWB - 15-02-2017 @yhackup; MySQL'de DATETIME değeri YYYY-MM-DD HH:MM:SS formatın değil midir? Siz nasıl 19.01.2017 15:21:57 şeklindeki bir tarihi DATETIME olarak saklayabiliyorsunuz? Cvp: Tarih Fark İşlemleri - yhackup - 15-02-2017 (15-02-2017, Saat: 11:34)SimaWB Adlı Kullanıcıdan Alıntı: @yhackup; ![]() Alan datetime, dediğiniz formatta saklanıyor ama editör bana düzgün gösteriyor olabilir mi ? Ben tarihleri trigger ile yazıyorum SET NEW.ctarih=NOW(); Tarih Fark İşlemleri - SimaWB - 15-02-2017 Windows kurulumda MySQL Command Line Client da kurulur. Onunla veritabanına bağlantı yapıp kontrol edebilirsin. (Aradan editörü çıkartıp bakmak için) |