Mysql ile süre farkı

Diğer veritabanları ve SQL komutlarıyla ilgli sorularınızı sorabilirsiniz. Delphi tarafındaki sorularınızı lütfen Programlama forumunda sorunuz.
Cevapla
denizfatihi
Üye
Mesajlar: 254
Kayıt: 16 Şub 2004 06:12
Konum: istanbul

Mysql ile süre farkı

Mesaj gönderen denizfatihi »

Merhaba,

Aşağıdaki mysql ile aşağıdaki sorgu ile nasıl veri çekebilirim.

seleck (gc.cikissaati-gc.girissaati) as fark from giriş_cıkıs

Giriş Çıkış Fark
09:06:00 18:00:00 08:54:00
11:06:00 17:35:00 06:29:00
Kullanıcı avatarı
Battosai
Üye
Mesajlar: 1316
Kayıt: 01 Eki 2007 12:02
Konum: Ankara

Re: Mysql ile süre farkı

Mesaj gönderen Battosai »

select TIMEDIFF(gc.cikissaati,girissaati) as fark
denizfatihi
Üye
Mesajlar: 254
Kayıt: 16 Şub 2004 06:12
Konum: istanbul

Re: Mysql ile süre farkı

Mesaj gönderen denizfatihi »

Teşekkür ederim.
denizfatihi
Üye
Mesajlar: 254
Kayıt: 16 Şub 2004 06:12
Konum: istanbul

Re: Mysql ile süre farkı

Mesaj gönderen denizfatihi »

Merhaba,
Mysql de sorgu verileri eksik geliyor (satır sayısı olarak) sonucu kısıtlayan bir bölüm mü var ?
sorgu için MySQLMacroQuery1 bileşenini kullanıyorum.

kolay gelsin...
Kullanıcı avatarı
Battosai
Üye
Mesajlar: 1316
Kayıt: 01 Eki 2007 12:02
Konum: Ankara

Re: Mysql ile süre farkı

Mesaj gönderen Battosai »

TIMEDIFF kullanımı ile alakalımıdır diyorsan alakası yoktur. "Where" den sonra yazdığın koşulları kontro et.
denizfatihi
Üye
Mesajlar: 254
Kayıt: 16 Şub 2004 06:12
Konum: istanbul

Re: Mysql ile süre farkı

Mesaj gönderen denizfatihi »

where den sonra ki kısmı da sildim şartsız olarak ta aynı satır sayısı dönüyor, şartlarla da aynı satır sayısı dönüyor 86 satır ile sanki sabitlenmiş.
Kullanıcı avatarı
Battosai
Üye
Mesajlar: 1316
Kayıt: 01 Eki 2007 12:02
Konum: Ankara

Re: Mysql ile süre farkı

Mesaj gönderen Battosai »

Kullandığın bileşen ayarlarına bak. SQL ile alakalı bir duruma değil o zaman
denizfatihi
Üye
Mesajlar: 254
Kayıt: 16 Şub 2004 06:12
Konum: istanbul

Re: Mysql ile süre farkı

Mesaj gönderen denizfatihi »

Merhaba,

Aşaığdaki sorgu ile personele ait gün içindeki tüm giriş çıkışlarını sorguluyorum ama buna ek olarak bu giriş çıkışların toplamlarını almak istiyorum nasıl yapabilirim ?
Teşekkür ederim.

Kod: Tümünü seç

SELECT gc.id,
gc.personelid,
p.ad,
p.soyad,
gc.giristarihi,
CASE
WHEN WEEKDAY(gc.giristarihi)=1 then 'Salı'
when WEEKDAY(gc.giristarihi)=2 then 'Çarşamba'
when WEEKDAY(gc.giristarihi)=3 then 'Perşembe'
when WEEKDAY(gc.giristarihi)=4 then 'Cuma'
when WEEKDAY(gc.giristarihi)=5 then 'Cumartesi'
when WEEKDAY(gc.giristarihi)=6 then 'Pazar'
when WEEKDAY(gc.giristarihi)=0 then 'Pazartesi'
END AS Gun,
p.kartno,
p.sicilno,
F.ad AS Firma,
B.ad AS `Bölüm`,
g.ad AS `Görevi`,
CAST(Min(gc.girissaati) As Time) AS GirisZaman,
CAST(Max(gc.cikissaati) As Time) AS CikisZaman,
TIMEDIFF(cast(Max(gc.cikissaati) As Time),CAST(Min(gc.girissaati) As Time)) as Sure,

SUM(TIMEDIFF(cast(Max(gc.cikissaati) As Time),CAST(Min(gc.girissaati) As Time)))  

FROM
gc_giriscikis gc
JOIN personel p ON (p.id = gc.personelid)
JOIN bolum AS B ON (B.id = P.bolumid)
JOIN grup AS g ON (g.id = P.grupid)
JOIN firma AS F ON (F.id = P.firmaid)
where P.DURUM ='Aktif'  and gc.id=gc.id 
group by 5,1 
order by gc.giristarihi
denizfatihi
Üye
Mesajlar: 254
Kayıt: 16 Şub 2004 06:12
Konum: istanbul

Re: Mysql ile süre farkı

Mesaj gönderen denizfatihi »

Merhaba,

Çözümü buldum başka birinin ihtiyacı olur diye yazıyorum.
İlgili satır

Kod: Tümünü seç

SEC_TO_TIME(SUM(TIME_TO_SEC(gc.cikissaati) - TIME_TO_SEC(gc.girissaati))) AS Sure,
Kullanıcı avatarı
dynamo
Üye
Mesajlar: 96
Kayıt: 21 Haz 2005 02:05
Konum: istanbul

Re: Mysql ile süre farkı

Mesaj gönderen dynamo »

select (gc.cikissaati-gc.girissaati) as fark from giriş_cıkıs ya da select TIMEDIFF(gc.cikissaati,girissaati) as fark
aynı gün içerisinde olur,peki kişi 01.01.2014 tarihinde 08:00:00'da girdi 02.01.2014 tarihinde 06:00:00 da çıktı , o zaman nasıl olacak?

sizin tablolarınız mysql de oluşturup aşağıdaki sorguyu çalıştırdığımda "SQL Error (1111): Invalid use of group function " hatası veriyor :?: (MYSQL 5.1.4 versiyonu kullanıyorum)

Kod: Tümünü seç

SELECT gc.id,
gc.personelid,
p.ad,
p.soyad,
gc.giristarihi,
CASE
WHEN WEEKDAY(gc.giristarihi)=1 then 'Salı'
when WEEKDAY(gc.giristarihi)=2 then 'Çarşamba'
when WEEKDAY(gc.giristarihi)=3 then 'Perşembe'
when WEEKDAY(gc.giristarihi)=4 then 'Cuma'
when WEEKDAY(gc.giristarihi)=5 then 'Cumartesi'
when WEEKDAY(gc.giristarihi)=6 then 'Pazar'
when WEEKDAY(gc.giristarihi)=0 then 'Pazartesi'
END AS Gun,
p.kartno,
p.sicilno,
F.ad AS Firma,
B.ad AS `Bölüm`,
g.ad AS `Görevi`,
CAST(Min(gc.girissaati) As Time) AS GirisZaman,
CAST(Max(gc.cikissaati) As Time) AS CikisZaman,
TIMEDIFF(cast(Max(gc.cikissaati) As Time),CAST(Min(gc.girissaati) As Time)) as Sure,

SUM(TIMEDIFF(cast(Max(gc.cikissaati) As Time),CAST(Min(gc.girissaati) As Time)))  

FROM
gc_giriscikis gc
JOIN personel p ON (p.id = gc.personelid)
JOIN bolum AS B ON (B.id = P.bolumid)
JOIN grup AS g ON (g.id = P.grupid)
JOIN firma AS F ON (F.id = P.firmaid)
where P.DURUM ='Aktif'  and gc.id=gc.id 
group by 5,1 
order by gc.giristarihi

bu kodda group by 5,1 nedir
Cevapla