Pluton Mesaj tarihi: Nisan 9, 2011 Mesaj tarihi: Nisan 9, 2011 Selamlar daha önce çok zorlandığım hatta lanet ettiğim bu tarih işlemlerine taktım kafayı ve illa ki daha kolay bir yolu olduğuna inanıyorum. Şimdi php'nin time() cinsinden tarihlerin tutulduğu bir sütunum var. Misal değer: 1302191055 Bunun karşılığı şu; 07-04-2011 18:44:15 Yapmak istediğim olay ise filtreleme yöntemi, değerlerim şunlar; Bugün, Dün, Bu hafta, Geçen hafta, Bu ay, Geçen Ay, Tüm zamanlar Ben bu sql kodunda bu değeri kullanarak yukarıda ki gibi filtreleme yöntemlerini yapabilir miyim? edit: google amcaya sordum birkaç kere ama acayip karıştırmışlar yada tam karşılığını ŞUDUR diye veren olmamış açıkcası.
jonq Mesaj tarihi: Nisan 9, 2011 Mesaj tarihi: Nisan 9, 2011 SQL ile mi PHP ile mi yapmak istiyorsun tam anlamadım açıkçası
Pluton Mesaj tarihi: Nisan 9, 2011 Konuyu açan Mesaj tarihi: Nisan 9, 2011 Şimdi şu şekilde kodlar gördüm ben; tdate >= convert(char(10),getdate()-1,126 Falan gibi yani; SELECT sutunlar FROM tablo WHERE tdate >= convert(char(10),getdate()-1,126 Misal bunun gibi
Mirage Mesaj tarihi: Nisan 9, 2011 Mesaj tarihi: Nisan 9, 2011 Kullandığın SQL sunucusunun SQL fonksiyonlarına bakcaksın. Mesela Ms SQL Server: http://msdn.microsoft.com/en-us/library/aa258863(v=sql.80).aspx Bu fonksiyonlar standard değilse her SQL sunucusunda olmayabilir ama her sunucu bi şekilde bu tip fonksiyonlar sunuyodur™.
Pluton Mesaj tarihi: Nisan 9, 2011 Konuyu açan Mesaj tarihi: Nisan 9, 2011 DATE_FORMAT(UNIX_TIMESTAMP(reports.check_time), '%y%m%d') = '20110409' Şu dahil 40'dan fazla şey denedim fonksiyonlarla ilgili yok yapamadım istediğimi. reports.check_time >= date_sub(current_date, interval 0 day) date_sub'un aldığı değer 2011-04-09 ama check_time'da ki değer unix formatında, ancak ve ancak bu check_time'ı öbür formata aldıgımda bile yemiyor bunu acaba yanlış mantık mı kuruyorum
4Ever Mesaj tarihi: Nisan 9, 2011 Mesaj tarihi: Nisan 9, 2011 PHP ile istedigin zamanı bul. Örnek bir hafta öncesini. Onu SQL'e ver. time - (hafta) = istedigin zaman.
Pluton Mesaj tarihi: Nisan 9, 2011 Konuyu açan Mesaj tarihi: Nisan 9, 2011 Zaten daha önce mesela dün ise dünün unix cinsinden değerini alıyodum sonra BETWEEN kullanarak yapıyodum ama uğraştırıyor. Dediğim gibi daha işlevsel daha kolay yolları var mı onları araştırıyorum
Mirage Mesaj tarihi: Nisan 9, 2011 Mesaj tarihi: Nisan 9, 2011 Pluton said: Şimdi php'nin time() cinsinden tarihlerin tutulduğu bir sütunum var. Misal değer: 1302191055 Bunun karşılığı şu; 07-04-2011 18:44:15 Bi saniye... veritabanında hangi tipte saklıyosun bunu?
Pluton Mesaj tarihi: Nisan 9, 2011 Konuyu açan Mesaj tarihi: Nisan 9, 2011 UNIX formatında saklıyorum.
Pluton Mesaj tarihi: Nisan 9, 2011 Konuyu açan Mesaj tarihi: Nisan 9, 2011 Çok uğratırdı vazgeçtim ya bildiğim gibi yaptım yine şu şekilde; said: $today = mktime(0,0,0,date('m'),date('d'),date('Y')); $yesterday = mktime(0,0,0,date('m'),date('d')-1,date('Y')); $last7day = mktime(0,0,0,date('m'),date('d')-7,date('Y')); $this_month = mktime(0,0,0,date('m'),1,date('Y')); $last_month = mktime(0,0,0,date('m')-1,1,date('Y')); $next_month = mktime(0,0,0,date('m')+1,1,date('Y')); said: switch($date) { case(2): $dt = "AND (reports.check_time BETWEEN $yesterday AND $today)"; break; case(3): $dt = "AND reports.check_time >= $last7day"; break; case(4): $dt = "AND (reports.check_time BETWEEN $this_month AND $next_month)"; break; case(5): $dt = "AND (reports.check_time BETWEEN $last_month AND $this_month)"; break; case(6): $dt = NULL; break; default: $dt = "AND reports.check_time >= $today"; break; } $dt değişkeninide sql sorgusuna kattık mı olay tamamlanıyor.
Mirage Mesaj tarihi: Nisan 9, 2011 Mesaj tarihi: Nisan 9, 2011 Özel bi sebebin var mı tarihi int türünde tutmak için? Date türünde saklasan bu tür işlemleri hem daha rahat yaparsın, hem de işlem veritabanı tarafından optimize edileceği için daha efektif olur. Özel bi sebebi yoksa sorguyla ilgili işlemleri veritabanına yüklemek daha yararlı.
Pluton Mesaj tarihi: Nisan 9, 2011 Konuyu açan Mesaj tarihi: Nisan 9, 2011 Aslında vardı 2 sene önce evvel ama ne olduğunu unuttum o zamandan beri alışkanlık yapmış. Dediğin gibi tüm sütunları değiştireyim bari php'ye yaptırmakla olmayacak
Mum_Chamber Mesaj tarihi: Nisan 9, 2011 Mesaj tarihi: Nisan 9, 2011 timespan olarak tutmak daha hizli oluyor malesef. @pluton, uzun uzun cevap yazamiyorum tasinma halinde oldugum icin. psuedo anlatayim. bir gunu timespan olarak bulacaksin. now'in timestampini buna bolup round down yapacaksin, bu sana bugunun 1970'den beri kacinci gun oldugunu verecek. karsilastirmak istedigin zaman icin de ayni islemi yapacaksin. o da karsilastirmak istedigin gunun kacinci gun oldugunu verecek. bu iki sayiyi birbirinden cikarttigindaki fark 0'sa bugundur, 1'se dundur, vesaire. ayni sekilde bir timespan'i gunun timespan'i yerine bir haftaya denk olan timespan'e bolersen 1970'den beri hangi haftasonu oldugunu bulursun. benzer sekilde ay vs icin tekrarlayabilirsin. kod olarak da, diyelim ki ilk bolumu yaptin ve bugun x'inci gun ve sen son 24 saat yerine sadece son iki gundeki (dun + bugun) postlari almak istiyorsun. select * from hedehodo where x - floor(timespan/<dayspan>) < 2 eger demek istedigini yanlis anlamiyorsam boyle yapiliyor.
Pluton Mesaj tarihi: Nisan 10, 2011 Konuyu açan Mesaj tarihi: Nisan 10, 2011 Ha iyiymiş bu tşk ettim müm çok süper oldu şimdi
Öne çıkan mesajlar