نمایش نتایج 1 تا 11 از 11

نام تاپیک: DateTme در C#‎ و DateTime در SQL Server 2008

  1. #1

    DateTme در C#‎ و DateTime در SQL Server 2008

    سلام به دوستان

    من یک table دارم در SQL Server ام که یکی از فیلدهای اون از نوع DataTime هستش. وقتی اون رو داخل برنامه ام می خونم فرمتش تغییر می کنه و حروف ب.ظ و یا ق.ظ به آخرش اضافه می شه.

    چیزی که من دنبالش هستم اینه که فرمتش حفظ بشه و حتی بخش milisecond اون هم داخل برنامه در دسترس باشه.

    چطوری می تونم اینکار رو انجام بدم؟ نمی خوام فرمتش تغییر کنه.

  2. #2
    کاربر تازه وارد آواتار armira
    تاریخ عضویت
    شهریور 1388
    محل زندگی
    که مازندران شهر ما یاد باد . . .
    سن
    39
    پست
    80

    نقل قول: DateTme در C#‎ و DateTime در SQL Server 2008

    سلام
    شما اول بگو با تاریخ میلادی کار میکنی یا شمسی؟ اگه میلادی استفاده میکنی من از طریق کدهای زیر به چیزی که شما میخوای رسیدم . برای شمسی هم از همین روش میشه استفاده کرد و اینکه راه ساده تر دیگری هم وجود داره یا نه من جستجو نکردم .

    string myDateTime = Convert.ToString(DateTime.Now.Year) +"/"+
    Convert.ToString(DateTime.Now.Month)+"/"+
    Convert.ToString(DateTime.Now.Day)+" "+
    Convert.ToString(DateTime.Now.Hour)+":"+
    Convert.ToString(DateTime.Now.Minute)+":"+
    Convert.ToString(DateTime.Now.Second);
    textBox1.Text = myDateTime;
    آخرین ویرایش به وسیله armira : سه شنبه 05 آذر 1392 در 10:38 صبح

  3. #3

    نقل قول: DateTme در C#‎‎ و DateTime در SQL Server 2008

    نقل قول نوشته شده توسط armira مشاهده تاپیک
    سلام
    شما اول بگو با تاریخ میلادی کار میکنی یا شمسی؟ اگه میلادی استفاده میکنی من از طریق کدهای زیر به چیزی که شما میخوای رسیدم . برای شمسی هم از همین روش میشه استفاده کرد و اینکه راه ساده تر دیگری هم وجود داره یا نه من جستجو نکردم .

    string myDateTime = Convert.ToString(DateTime.Now.Year) +"/"+
    Convert.ToString(DateTime.Now.Month)+"/"+
    Convert.ToString(DateTime.Now.Day)+" "+
    Convert.ToString(DateTime.Now.Hour)+":"+
    Convert.ToString(DateTime.Now.Minute)+":"+
    Convert.ToString(DateTime.Now.Second);
    textBox1.Text = myDateTime;
    من با تاریخ میلادی کار می کنم. کاری که شما انجام می دی تبدیل به تایپ string هستش..... ببین من دقیقا همون مقداری رو که توی SQL server برای ثبت فیلد DateTime نشون می ده رو "دقیقا" همون رو با ماهیت تاریخ میلادی توی برنامه ام می خوام (تاکید من روی بخش Milisecond زمانش هستش)

  4. #4
    کاربر دائمی آواتار debugger
    تاریخ عضویت
    اردیبهشت 1387
    محل زندگی
    Turkey
    پست
    843

    نقل قول: DateTme در C#‎ و DateTime در SQL Server 2008

    عزیزم نوع فیلدتو تو sql از نوع nvarchar(50) بگیر

  5. #5
    کاربر تازه وارد آواتار armira
    تاریخ عضویت
    شهریور 1388
    محل زندگی
    که مازندران شهر ما یاد باد . . .
    سن
    39
    پست
    80

    نقل قول: DateTme در C#‎‎ و DateTime در SQL Server 2008

    طبق گفته ی دوست عزیزمون جناب debugger باید نوع فیلدت رو nvarchar(50) در نظر بگیری . حالا 50 نه کمتر هم میتونی مثلا 20 . اینطوری دقیقا همه ی اون چیزی که میخوای در دسترست هست.

  6. #6

    نقل قول: DateTme در C#‎ و DateTime در SQL Server 2008

    تشکر از توضیحاتتون . پس اینطور که معلومه نمیشه توی DB هم فیلد رو از نوع DateTime در نظر گرفت. به عبارتی دریافت مقادیر (از نوع DateTime) از بانک اطلاعاتی و آوردنش داخل برنامه تحت هر شرایطی باعث تغییر فرمت اون میشه درسته؟ من درست متوجه شدم از راهنمایی هاتون؟

  7. #7
    کاربر تازه وارد آواتار armira
    تاریخ عضویت
    شهریور 1388
    محل زندگی
    که مازندران شهر ما یاد باد . . .
    سن
    39
    پست
    80

    نقل قول: DateTme در C#‎ و DateTime در SQL Server 2008

    ببین دوست عزیز نوع DateTime فرمتش همونی هست که تو برنامت یا توی بانکت دیدی . چون میخوای فرمتش دلخواه خودت باشه یا به عبارتی همون اطلاعاتی که تو از تاریخ و زمان میخوای رو به همون صورتی که تو میخوای نشون بده پس باید خودت اون رو بسازی . برای این کار یک فیلد از نوع nvarchar یا varchar(اگه فقط با تاریخ میلادی کار میکنی) در نظر بگیر و با دستوراتی که گفته شد همون خروجی که مد نظرت هست رو تولید کن و در دیتابیس ذخیره کن . موفق باشی .

  8. #8
    کاربر دائمی
    تاریخ عضویت
    دی 1383
    محل زندگی
    اصفهان
    پست
    1,436

    نقل قول: DateTme در C#‎ و DateTime در SQL Server 2008

    نقل قول نوشته شده توسط odiseh مشاهده تاپیک
    تشکر از توضیحاتتون . پس اینطور که معلومه نمیشه توی DB هم فیلد رو از نوع DateTime در نظر گرفت. به عبارتی دریافت مقادیر (از نوع DateTime) از بانک اطلاعاتی و آوردنش داخل برنامه تحت هر شرایطی باعث تغییر فرمت اون میشه درسته؟ من درست متوجه شدم از راهنمایی هاتون؟
    وقتی شما فیلد رو DateTime میگیری و مقداری رو درش ذخیره میکنی، شما داری مقدار اون 'لحظه' رو در دیتابیس ذخیره میکنی و موقع بازیابی هم همون مقدار رو به صورت متغیر DateTime (که شامل Millisecond هم میشه) رو دریافت میکنی. موضوع این هست که شما باید عمل فرمت کردن رو در نرم افزار مدیریت کنی و بهتره کاری به دیتابیس در این مورد نداشته باشی...دیتابیس فقط مقدار اون 'لحظه' رو بدون هیچ تغییری برای شما نگه داری میکنه.
    حروف ب.ظ و غیره هم مربوط به فرمت تاریخ میشه.شما بعد از دریافت تاریخ تحت عنوان یک متغیر DateTime، میتونید به هر نحوی که میخواین اون رو فرمت کنید.

  9. #9

    نقل قول: DateTme در C#‎ و DateTime در SQL Server 2008

    نقل قول نوشته شده توسط plus مشاهده تاپیک
    موقع بازیابی هم همون مقدار رو به صورت متغیر DateTime (که شامل Millisecond هم میشه) رو دریافت میکنی.

    نه دیگه موضوع دقیقا همین قسمته..... چون این اتقاف نمی افته و بخش Milisecond اش توی برنامه حذف میشه و حروف ب.ظ و یا ق.ظ. اضافه میشه. من دقیقا همونی رو که شما اشاره کردی رو می خوام که نمیشه ظاهرا!

  10. #10
    کاربر دائمی
    تاریخ عضویت
    دی 1383
    محل زندگی
    اصفهان
    پست
    1,436

    نقل قول: DateTme در C#‎ و DateTime در SQL Server 2008

    نقل قول نوشته شده توسط odiseh مشاهده تاپیک
    نه دیگه موضوع دقیقا همین قسمته..... چون این اتقاف نمی افته و بخش Milisecond اش توی برنامه حذف میشه و حروف ب.ظ و یا ق.ظ. اضافه میشه. من دقیقا همونی رو که شما اشاره کردی رو می خوام که نمیشه ظاهرا!
    بررسی کردم، بخش MilliSecond حذف نمیشه ولی کمی (با دقت 1/333 ثانیه) گرد میشه.مثلا 125 رو 127 نگه میداره.حروف ب.ظ و ... هم که قبلا گفتم مربوط به فرمت تاریخ هست و ربطی به چیزی که واقعا نگهداری میشه نداره...

    SqlConnection conn = new SqlConnection(strConnString);
    SqlCommand cmd = new SqlCommand("UPDATE tblTest SET Time=@Time", conn);
    cmd.Parameters.Add(new SqlParameter("Time", new DateTime(2013, 1, 1, 10, 15, 20, 998)));
    conn.Open();
    cmd.ExecuteNonQuery();
    conn.Close();


    SqlCommand retCmd = new SqlCommand("SELECT TOP(1) Time FROM tblTest", conn);
    conn.Open();
    DateTime time = (DateTime)retCmd.ExecuteScalar();
    conn.Close();

    در صورتی که شما از SQL Server 2008 یا بالاتر استفاده کنید، میتونید از نوع datetime2 استفاده کنید که دقت اون 100 نانو ثانیه هست و بنابراین نباید دیگه میلی ثانیه رو گرد کنه...

  11. #11

    نقل قول: DateTme در C#‎ و DateTime در SQL Server 2008

    سلام دوستان
    من مشکلم رو اینطوری بالاخره حلش کردم
    1- توی Table یه فیلد با نام CreateDate با تایپ Datetime ایجاد کردم
    2- یک view از Table ام درست کردم و توش علاوه بر همه فیلدهای Table، یک فیلد محاسباتی مبتنی بر CreateDate با فرمت varchar و با پارامتر 121 و استفاده از تابع Convert :
    Convert(varchar, CreateDate, 121)
    3- توی Appl. ، حالا من با فیلدی با فرمت string کار می کنم و مشکلی ندارم.

تاپیک های مشابه

  1. مبتدی: مشکل در نوع برگشتی DateTime از SQL Server 2005
    نوشته شده توسط smh_5800 در بخش ASP.NET Web Forms
    پاسخ: 2
    آخرین پست: شنبه 20 فروردین 1390, 08:32 صبح
  2. SQL Server 2008 دارای IntelliSense خواهد بود!
    نوشته شده توسط Behrouz_Rad در بخش SQL Server
    پاسخ: 4
    آخرین پست: یک شنبه 20 مرداد 1387, 10:38 صبح

برچسب های این تاپیک

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •