الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

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

بدأه sunset98 في 23 أبريل 2013 · 8 رد · 1,214 مشاهدة · في ASP.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

 

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

 

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

 

اقتباس

19/4/2004

 

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

 

اقتباس

19/04/2004

 

 

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

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

 

 

مارأيكم ...؟

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

 

اقتباس

d/M/yyyy

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

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

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

تم تعديل هذه المشاركة بواسطة sunset98 في 23 أبريل 2013 في 22:41

#2

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

  1. هل تفتح الجدول بشكل مياشر أم تستخدم  واجهات #C  أو VB.NET أم ...
  2. التاريخ و الوقت داخل سيكوال سيرفر يخزن بطريقة واحدة , و لكن يمكننا إظهاره بتنسيقات مختلفة و لكل تنسيق رمز محدد (رابط) .
  3. الأفضل استخدام datetime  و ليس char  أو varchar من أجل مساحة التخزين و من أجل المقارنة .
  4. مبدئيا جرب مايلي :
    select convert(varchar, GETDATE(), 101) AS A101
    select convert(varchar, GETDATE(), 102) AS A102
    select convert(varchar, GETDATE(), 103) AS A103
    select convert(varchar, GETDATE(), 104) AS A104
    select convert(varchar, GETDATE(), 105) AS A105
    select convert(varchar, GETDATE(), 106) AS A106
    select convert(varchar, GETDATE(), 107) AS A107
    select convert(varchar, GETDATE(), 108) AS A108
    select convert(varchar, GETDATE(), 109) AS A109
    select convert(varchar, GETDATE(), 110) AS A110
    select convert(varchar, GETDATE(), 111) AS A111
    select convert(varchar, GETDATE(), 112) AS A112
    select convert(varchar, GETDATE(), 113) AS A113
    SELECT CONVERT(VARCHAR , DAY(GETDATE())) + '/' + CONVERT(VARCHAR ,MONTH(GETDATE())) + '/' + CONVERT(VARCHAR ,YEAR (GETDATE())) AS Custom

     

1

لا إله إلا الله ... محمد رسول الله

لو كانت مشاركتي مفيدة و تريد تشجيعي على المزيد من العطاء , فضلا قم بتقييم المشاركة

المعرًف القديم : houssam11350_11350

من مواضيعي : ArabGenCode : مولد كود و إجراءات مخزنة و واجهات لجداول سيكوال سيرفر

#3

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

#4
KARIMSOFT كتب:

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

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

لا إله إلا الله ... محمد رسول الله

لو كانت مشاركتي مفيدة و تريد تشجيعي على المزيد من العطاء , فضلا قم بتقييم المشاركة

المعرًف القديم : houssam11350_11350

من مواضيعي : ArabGenCode : مولد كود و إجراءات مخزنة و واجهات لجداول سيكوال سيرفر

#5
houssam11350_11350 كتب:

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

  1. هل تفتح الجدول بشكل مياشر أم تستخدم  واجهات #C  أو VB.NET أم ...
  2. التاريخ و الوقت داخل سيكوال سيرفر يخزن بطريقة واحدة , و لكن يمكننا إظهاره بتنسيقات مختلفة و لكل تنسيق رمز محدد (رابط) .
  3. الأفضل استخدام datetime  و ليس char  أو varchar من أجل مساحة التخزين و من أجل المقارنة .
  4. مبدئيا جرب مايلي :
    select convert(varchar, GETDATE(), 101) AS A101
    select convert(varchar, GETDATE(), 102) AS A102
    select convert(varchar, GETDATE(), 103) AS A103
    select convert(varchar, GETDATE(), 104) AS A104
    select convert(varchar, GETDATE(), 105) AS A105
    select convert(varchar, GETDATE(), 106) AS A106
    select convert(varchar, GETDATE(), 107) AS A107
    select convert(varchar, GETDATE(), 108) AS A108
    select convert(varchar, GETDATE(), 109) AS A109
    select convert(varchar, GETDATE(), 110) AS A110
    select convert(varchar, GETDATE(), 111) AS A111
    select convert(varchar, GETDATE(), 112) AS A112
    select convert(varchar, GETDATE(), 113) AS A113
    SELECT 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

 

 

 

 

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

#6

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

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

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

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

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

1

لا إله إلا الله ... محمد رسول الله

لو كانت مشاركتي مفيدة و تريد تشجيعي على المزيد من العطاء , فضلا قم بتقييم المشاركة

المعرًف القديم : houssam11350_11350

من مواضيعي : ArabGenCode : مولد كود و إجراءات مخزنة و واجهات لجداول سيكوال سيرفر

#7

الله اكبر

#8

لدي هذا الكود

 

 

 <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.

#9

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

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

     

1

لا إله إلا الله ... محمد رسول الله

لو كانت مشاركتي مفيدة و تريد تشجيعي على المزيد من العطاء , فضلا قم بتقييم المشاركة

المعرًف القديم : houssam11350_11350

من مواضيعي : ArabGenCode : مولد كود و إجراءات مخزنة و واجهات لجداول سيكوال سيرفر

مواضيع مشابهة