Zoque.Forum
»
SQL de tarihlerle ugrasmak...!
|
| Veritabanları MySQL , MSSQL, SQL, Access, Oracle |
![]() |
|
|
LinkBack | Seçenekler |
|
|
#1 (permalink) |
|
Üyelik Tarihi: 25.08.2001
Yer: Antalya
Yaş: 27
Mesaj: 970
|
SQL de tarihlerle ugrasmak...!
PHP de hazırladığım bir sistemde bir veritabanındaki fiyatlar tablomdaki alanlar ve değerler su sekilde...:
Kod:
id | From_Date | To_Date | fiyat ------------------------------------- 1 | 2003-11-01 | 2003-11-30| 10 2 | 2003-12-01 | 2004-03-31| 20 3 | 2003-12-26 | 2004-01-02| 30 Burada bi otelin bi odasının belli zamanlardaki fiyatları verilmiş. yani -bu bir oda 01 Kasım 2003 den 30 kasım 2003 e kadar 10 TL (sonbahar sezonu) - bu bir oda 01 Aralık 2003 den 31 mart 2004 e kadar 20 TL (kış sezonu) ayrıca: bu bir oda 26 Aralık 2003 den 2 ocak 2004 e kadar 30 TL (noel zamanı) şimdi ziyaretçi bu bişeyi istediğinde bir tarih aralığı seçiyor. Benim istediğim seçtiği tarih aralığına göre oda fiyatını vermesi. çünkü ziyaretçi de o odayı tutmaya başlama tarihi ile bitiş tarihini veriyor. Mesela Ziyaretçi 20 Kasım 2003 ten 30 kasım 2003 e kadarlık oda fiyatı isterse: (30 - 20)=10 gün 10 gün * 10 TL (bir günlük fiyatı) hesaplamasını yapıp 100TL fiyatı vermem gerekiyor. 03 ocak 2004 ile 05 ocak 2004 arasını isterse 2 gün için 20 X 2= 40 TL fiyat vermem gerekiyor. ve işte asıl sorun adam 20 kasım 2003 ile 05 Ocak 2004 arasındaki fiyatı isterse yukarıdaki girilen tarih aralıklarına göre nasıl sorgu yapabilirim. ben şu anda şunu yapıyorum SELECT * from fiyatlar diyip fiyatları ve tarih artalıklarını ayırıyorum. PHP ile her günün fiyatını falan çıkarıyorum baya bi kod kalabalığı yaptım anlayacağınız. Fakat tahminime göre mantık veya SQL sorgusu ile en azından PHP kodu ile yapacağım iş kısaltılabilir. Var mı mümkünatı? Saygılar...
__________________
Take me back to my boat on the river and I won't cry out any more |
|
|
|
|
|
#4 (permalink) |
|
Üyelik Tarihi: 25.08.2001
Yer: Antalya
Yaş: 27
Mesaj: 970
|
Bir yöntem buldum ve o şekilde yaptım.. Fazla da uzun olmadı..
MySQL de TO_DAYS diye bir fonksyion var onu kullandım. Bu fonksiyon tarihi gün formatına çeviriyor. (01/01/0000 dan başlayarak birer birer sayan günler) Yani 01/11/2003 tarihi 731885. gün oluyor. bir dizi yaratıp günlere göre elemanlarına fiyatları aktardım. sonra seçilen gün aralığına göre arraydan ayıkladım. bilmek isteyen olur diye örneği yapıştırıyorum... PHP Code:
__________________
Take me back to my boat on the river and I won't cry out any more |
|
|
|
Zoque'a hoşgeldiniz!