delphi4arab منتديات دلفي للعرب

نسخة كاملة : التعامل مع التاريخ في firebird
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
الصفحات : 1 2
السلام عليكم
استعمل في تطبيقي  دالفي xe5 وقاعدة بيانات  firebird و الاتصال عبر مكونات unidac واجهتني مشكلة في التعامل مع تاريخ حيث عند انشاء حقل من نوع date  يكون التاريخ بالشكل  yyyy/mm/dd  و هدا التنسيق لم يعمل عند استعمال استعلام   sql حيث يقبل فقط الحقول التي تحتوي  التنسيق  yyyy.mm.dd و الا تظهر مشكلة .
هل توجد طريقة لجعل التاريخ يسجل في قاعدة البيانات بالتنسيق yyyy.mm.dd  فقط ؟؟ ( يمكن استعمال دالة تحول بين التنسيقين لكن ابحث عن حلول اخرى ان امكن)
وشكرا
السلام عايكم

ممكن إستعلام الـ SQL المستعمل ؟
اوك اخي لؤي تفضل
PHP كود :
with DataModule1.filtageExper do
 
   begin
      Close
;
 
     SQL.Clear;

 
      SQL.Add('select (extract( year from CURRENT_DATE) - extract(year from cast(DATE_NAIS as date)))AS age,NUM_PERS,NOM,PRENOM,DATE_NAIS,ADRESSE,SEX,DATE_INSTA,UNITE,GRADE,NUM_CORP,NOM_COR,NUM_GRA,NOM_GRADE,APP_COR,NUM_SER,NOM_SERV,NOM_UNI,NUM_UNI,APPER_SER');
 
    SQL.Add(' FROM PERSONEL,CORPS,GRADES,SERVICE,UNITE');
 
    SQL.Add(' WHERE (PERSONEL.UNITE=UNITE.NUM_UNI) AND (PERSONEL.GRADE=GRADES.NUM_GRA) AND (SERVICE.NUM_SER=UNITE.APPER_SER) AND (CORPS.NUM_CORP=GRADES.APP_COR) ');
 
     Open;
 
   end; 

المشكل مع الحقل DATE_NAIS يجب ان يكون يحتوي على تاريخ بهدا التنسيق yyyy.mm.dd
السلام عليكم
DATE_NAIS هو حقل في القاعدة firebird و يحتوي على تواريخ بشكل yyyy.mm.dd ؟ إن كان كذلك فهو ليس من نوع date ..

http://www.firebirdfaq.org/faq137/
وعليكم السلام
معك حق بعد مراجعة الحقل الدي انشاته كان من نوع نصي والخطا اني كنت اخد التاريخ من المكون tdatetimepicker مباشرة و احفظه في دلك الحقل وبالتالي حدق خطا في الاستعلام .

يجب ايجاد طريقة لتحويل التاريخ من التنسيق DD/MM/YYYY للمكون tdatetimepicker الى التنسيق DD.MM.YYYY افكر في انشاء دالة .
السلام عليكم

ممكن باستعمال الدالة:
كود :
formatdatetime('dd.mm.yyyy',datetimepicker)
و عليكم السلام
بارك الله فيك اخي لؤي كفيتني مشقة كتابة دالة
لقد نجح الامر
السلام عليكم

معروف ان  الدالة
PHP كود :
RemainingDays 
تحسب الفرق بين تاريخين بالايام مثال :

PHP كود :
lbl1.Caption:=IntToStr(RemainingDays(dtp1.Date, dtp2.Date)); 

لكن حاولت استعمالها في استعلام sql لكن ظهر معي خطا ان الدالة غير معرفة Confused
PHP كود :
with DataModule1.filtageExper do
 
   begin
      Close
;
 
     SQL.Clear;
 
      SQL.Add('select (RemainingDays(CURRENT_DATE, DATE_INSTA)))AS experiance,NUM_PERS,NOM,PRENOM,DATE_NAIS,ADRESSE,SEX,DATE_INSTA,UNITE,GRADE,NUM_CORP,NOM_COR,NUM_GRA,NOM_GRADE,APP_COR,NUM_SER,NOM_SERV,NOM_UNI,NUM_UNI,APPER_SER');
 
    SQL.Add(' FROM PERSONEL,CORPS,GRADES,SERVICE,UNITE');
 
    SQL.Add(' WHERE (PERSONEL.UNITE=UNITE.NUM_UNI) AND (PERSONEL.GRADE=GRADES.NUM_GRA) AND (SERVICE.NUM_SER=UNITE.APPER_SER) AND (CORPS.NUM_CORP=GRADES.APP_COR) ');
 
     Open;
 
   end;
 
   end; 
حيث اريد حساب الفرق بين تاريخ اليوم و تاريخ التنصيب
PHP كود :
DATE_INSTA بالايام لاجدول العمال PERSONEL فما الحل ؟؟ 
السلام عليكم
ممكن إستعمال الوظيفة datediff :


PHP كود :
SELECT datediff (day, date '26-Jun-2017', date '11-Sep-2017') AS DiffDate from rdb$database 
وعليكم السلام
شكرا اخي لؤي لم ينجح معي الامر لكن وجدت الحل باستخدام هدا الاستعلام
PHP كود :
with DataModule1.filtageExper do
 
   begin
      Close
;
 
     SQL.Clear;
 
    SQL.Add('select TRUNC ( (CAST(CURRENT_DATE AS DATE) - CAST ( DATE_INSTA AS DATE)),0) AS experiance,NUM_PERS,NOM,PRENOM,DATE_NAIS,ADRESSE,SEX,DATE_INSTA,UNITE,GRADE,NUM_CORP,NOM_COR,NUM_GRA,NOM_GRADE,APP_COR,NUM_SER,NOM_SERV,NOM_UNI,NUM_UNI,APPER_SER');
 
    SQL.Add(' FROM PERSONEL,CORPS,GRADES,SERVICE,UNITE');
 
    SQL.Add(' WHERE (PERSONEL.UNITE=UNITE.NUM_UNI) AND (PERSONEL.GRADE=GRADES.NUM_GRA) AND (SERVICE.NUM_SER=UNITE.APPER_SER) AND (CORPS.NUM_CORP=GRADES.APP_COR) ');

 
     Open; 
اريد ان اضيف شرطا ان ناخد الخبرة من edit text مثلا الخبرة تساوي 5 سنوات حاولت لكن لم افلح .هل لديك فكرة كيف يكون الاستعلام ؟؟
الصفحات : 1 2