• 0
sunset98

تكيف date لتقبل تاريخ بشكل محدد في SQL server

سؤال

السلام عليكم ورحمة الله وبركاته

 

اشكركم جميعا على ماتقدموه .. من زوار وااعضاء ...اريد ان اشاركم تفكيري وهذا مااحب فعله

 

لدي  جدول يحوي على صف يحمل قيم التاريخ يوم ميلاد المريض وهي مكتوبه بصيغه محدده مثل:

 

19/4/2004

 

وطبعاً لا اريدها ان تكون ببهذا الشكل لاحظو ال 4 اضيف لها 0 

 

19/04/2004

 

 

ولذلك وضعتها من النوع nchar  كي تصبح كالمثال الاول, بهذة الطريقة تقوم بالمطلوب من شكل محددكاالذي اريده ولكن عندما اردت  تطبق البحث من خلال تاريخين واجهت بعض الصعوبات,

بعد تفكير ,اصبح لدي حلين اما ان اضعها بنوع date  وتكون باصيغة المطلوبة(بدون time) وهو مااتمنى فعله او الحل الثاني اقوم بقسم السلسلة النصية بثلاثة اقسام والبحث في كل صف ثم  اقوم بالمقارنة يدوياً والدخول فيها برمجياً لكن مااخشاه ظهور اخطاء بعيده المدى ولربما لا استطيع ايجادها .. الا في وقت متأخر..

 

 

مارأيكم ...؟

هل استطيع تكيف ال date كي تقبل قيم بمثل هذا الشكل

 

d/M/yyyy

ملحوظه/ حاولت فعل ذالك في date  كي تقبل هذة القيمة لكن لافائده

او لديكم راي اخر ...

شكراً لقرائتكم

تم تعديل بواسطه sunset98
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

8 إجابة على هذا السؤال .

  • 0

السلام عليكم ...

  1. هل تفتح الجدول بشكل مياشر أم تستخدم  واجهات #C  أو VB.NET أم ...
  2. التاريخ و الوقت داخل سيكوال سيرفر يخزن بطريقة واحدة , و لكن يمكننا إظهاره بتنسيقات مختلفة و لكل تنسيق رمز محدد (رابط) .
  3. الأفضل استخدام datetime  و ليس char  أو varchar من أجل مساحة التخزين و من أجل المقارنة .
  4. مبدئيا جرب مايلي :
    select convert(varchar, GETDATE(), 101) AS A101select convert(varchar, GETDATE(), 102) AS A102select convert(varchar, GETDATE(), 103) AS A103select convert(varchar, GETDATE(), 104) AS A104select convert(varchar, GETDATE(), 105) AS A105select convert(varchar, GETDATE(), 106) AS A106select convert(varchar, GETDATE(), 107) AS A107select convert(varchar, GETDATE(), 108) AS A108select convert(varchar, GETDATE(), 109) AS A109select convert(varchar, GETDATE(), 110) AS A110select convert(varchar, GETDATE(), 111) AS A111select convert(varchar, GETDATE(), 112) AS A112select convert(varchar, GETDATE(), 113) AS A113SELECT CONVERT(VARCHAR , DAY(GETDATE())) + '/' + CONVERT(VARCHAR ,MONTH(GETDATE())) + '/' + CONVERT(VARCHAR ,YEAR (GETDATE())) AS Custom

     

1

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

اكرمك الله اخي حسام

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

اكرمك الله اخي حسام

أكرمك الله أخي كريم و بارك فيك ..

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

السلام عليكم ...

  1. هل تفتح الجدول بشكل مياشر أم تستخدم  واجهات #C  أو VB.NET أم ...
  2. التاريخ و الوقت داخل سيكوال سيرفر يخزن بطريقة واحدة , و لكن يمكننا إظهاره بتنسيقات مختلفة و لكل تنسيق رمز محدد (رابط) .
  3. الأفضل استخدام datetime  و ليس char  أو varchar من أجل مساحة التخزين و من أجل المقارنة .
  4. مبدئيا جرب مايلي :
    select convert(varchar, GETDATE(), 101) AS A101select convert(varchar, GETDATE(), 102) AS A102select convert(varchar, GETDATE(), 103) AS A103select convert(varchar, GETDATE(), 104) AS A104select convert(varchar, GETDATE(), 105) AS A105select convert(varchar, GETDATE(), 106) AS A106select convert(varchar, GETDATE(), 107) AS A107select convert(varchar, GETDATE(), 108) AS A108select convert(varchar, GETDATE(), 109) AS A109select convert(varchar, GETDATE(), 110) AS A110select convert(varchar, GETDATE(), 111) AS A111select convert(varchar, GETDATE(), 112) AS A112select convert(varchar, GETDATE(), 113) AS A113SELECT CONVERT(VARCHAR , DAY(GETDATE())) + '/' + CONVERT(VARCHAR ,MONTH(GETDATE())) + '/' + CONVERT(VARCHAR ,YEAR (GETDATE())) AS Custom

     

 نعم لدي صفحة ويب بااستخدام ال asp and C#

 اي ال sql server  لا يمكن التحكم باشكل الذي اريد.. :(

 

اذن في حالتي استبدل ال vchar  ب date لأني اريد التاريخ فقط وعندما اريد اظهارها بالشكل الذي اريده 

 

select CONVERT(VARCHAR , DAY(patient.Date)) + '/' + CONVERT(VARCHAR ,MONTH(patient.Date)) + '/' + CONVERT(VARCHAR ,YEAR (patient.Date)) from patient

 

 

 

 

شكراً جزيلاً اسأل الله ان يجزك كل خير ..

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

السلام عليكم ..

لا شكر على واجب ...

يمكنك أيضا عمل Format  مباشرة من الـــكود مثلا لو عندك GridView  يكون :

<asp:boundfield datafield="Your_Date_Column" dataformatstring="{0:MMMM d, yyyy}" htmlencode="false" />

 أو ممكن تستخدم  الدالة ToString  و تضع الــ Format  المناسب ..

1

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

لدي هذا الكود

 

 

 <asp:TextBox ID="txtStartDate" runat="server"></asp:TextBox>            <asp:CalendarExtender       ID="CalendarExtender1"       TargetControlID="txtStartDate"       runat="server" ClearTime="True" Enabled="True" Format="d/M/yyyy"  />

 

حقل نصي يستقبل التاريخ بأستخدام calendar tool

ثم قمت بتحويلة


الى نوع date كي ادخلة القاعدة
بمثل هذة الطريقة

 

           com.Parameters.AddWithValue("@Date", Convert.ToDateTime(txtStartDate.Text.ToString()));

 


لاحظت ان التاريخ يخزن بطريقة خاطئة

فمثلا اريد ادخال

01/04/2013

 

يدخلة

04/01/2013

 لاحظوا بالصوره الطريقة القديمة التي كنت ادخل التاريخ فيها ...تدخلها كم هي اما Date فهى تقلبها ,,

هل طريقة التحويل خاطئة.؟ او لها طريقة خاصة ..؟

 

post-273686-0-88634700-1366903440_thumb.

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

السلام عليكم ..

  1. التاريخ الذي تتعاملون معه سواء أكان 4-1-2013 أو 1-4-2013 فهو لن يسبب خطأ لأن الواحد و الاربعة يصلح أن يكون يوم و شهر ...إذا كنا نعرف تنسيق التاريخ فيمكننا التعامل مع ParseExact  .
  2. com.Parameters.AddWithValue("@Date",DateTime.ParseExact(txtStartDate.Text , "d/M/yyyy" , CultureInfo.InvariantCulture));

     

1

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

من فضلك سجل دخول لتتمكن من التعليق

ستتمكن من اضافه تعليقات بعد التسجيل



سجل دخولك الان

  • يستعرض القسم حالياً   0 members

    لا يوجد أعضاء مسجلين يشاهدون هذه الصفحة .