PDA

View Full Version : کمک برای فرمت بندی نوع داده ای تاریخ در sql و سی شارپ



malloc
جمعه 07 فروردین 1394, 14:10 عصر
سلام دوستان....

به یه مشکل خوردم بدجور درگیرم کرده...
من تاریخ های زیر رو توی دیتا بیس دارم
2015-03-27 06:00:00.000
2015-03-27 07:00:00.000
2015-03-27 08:00:00.000
2015-03-27 09:00:00.000
حالا وقتی اینها رو از دیتابیس میخونم و توی نوع داده ای DateTime میریزم به شکل زیر در میان :
3/27/2015 6:00:00 AM
3/27/2015 7:00:00 AM
3/27/2015 8:00:00 AM
3/27/2015 9:00:00 AM

حالا من با دقیقه و ثانیه و اینا کاری ندارم .... شما فقط به تاریخ (سال و ماه و روز) دقت کنید
بعد وقتی میخوام مثلا یک سطر رو براساس تاریخ حذف کنم تاریخ ها با هم جور در نمیان و چیزی حذف نمیشه
یعنی من فقط تاریخ رو از سمت سی شارپ به صورت مثلا 3/27/2015 میفرستم سمت دیتابیس توی دیتابیس هم با انواع و اقسام روشها (از قبیل Pars , Convert , Format , ....) تست کردم که تاریخ توی Sql به این شکل در بیاد اما نتونستم
کسی راحلی داره ؟؟؟ جان من کمک کنید داغونم کرده

aslan
جمعه 07 فروردین 1394, 15:49 عصر
http://www.sqlusa.com/bestpractices/datetimeconversion/
http://www.blackwasp.co.uk/SQLDateTimeFormats.aspx

arashnaderi
جمعه 07 فروردین 1394, 16:41 عصر
سلام
اینطوری هم میتونی عمل میکنی
DateTime dTemp = DateTime.Now.Date;
با EntityFramework کار میکنید؟اگر که اینطوره با این دستور رکوردها رو پیدا میکنه

from c in YourTable
where c.Date == dTemp
select c


الان نوع فیلد Date توی اس کیو ال،date هستش.

malloc
جمعه 07 فروردین 1394, 19:38 عصر
دوستان گلم ممنون بابت پاسختون امتون گرم اما خوب جوابتون مد نظر من نبود یعنی سوالمو بد متوجه شدید.....

امیدوارم ایندفعه بتونم خوب سوالمو مطرح کنم ..... من توی دیتابیس این تاریخ رو دارم
2015-03-27 حالا موقعی که همین تاریخ رو میخونم و میریزم توی یه متغیر DateTime تبدیل به این میشه 3/27/2015

شما به عدد 3 دقت کنید ..... اونیکه توی دیتا بیس هست 03 هست اما اونیکی توی کد هست 3 خالی هست ....


بخاطر همین توی دستور حذف این دوتا رو یکی شناسایی نمیکنه....

امیدوارم ایندفعه منظورمو درست گفته باشم.....

اگه خواستید میتونم یه نمونه پروژه از مشکلم درست کنم و بهتون نشون بدم

arashnaderi
جمعه 07 فروردین 1394, 20:09 عصر
خب دستورش توی Entity بدردتون میخوره؟ یا نه از پراسیجر استفاده میکنید؟

arashnaderi
جمعه 07 فروردین 1394, 20:11 عصر
یه نمونه براتون توی entity مینویسم که کار میکنه

var c = ClsMain.ContextModel;
DateTime d = DateTime.Now;
var q = (from cc in c.Statistics
where DbFunctions.TruncateTime(cc.dd) == DbFunctions.TruncateTime(d)
select cc).ToList();

دستور
DbFunctions.TruncateTime
زمان رو از تاریخ حذف میکنه. نوع فیلد dd توی اس کیو ال، datetime هستش

malloc
جمعه 07 فروردین 1394, 20:34 عصر
داداش ممنون وقت گذاشتی اما خوب من چون Entity نزدم زیاد متوجه منظورتون نشدم ..... توی دستوارت معمولی دستور زیر تاریخ رو حذف میکنه :
DateTime.Now.Date;
اما خوب گفتم من بحثم اصلا این نیست که تاریخ و جدا کنم یا نکنم ..... چون من هم سمت Sql میتونم زمان و از تاریخ حذف کنم هم سمت سی شارپ

بحث من سر اینه که چطور دوتا تاریخ زیر رو مثل هم بکنم :


C#
Sql



3/27/2015

2015/03/27



بیشتر بحث من اینه که وقتی میاد سمت سی شارپ صفر اول ماه رو برمیداره اما توی دیتا بیس صفر اول ماه هست شما به 3 و 03 دقت کن

Hamid2547
جمعه 07 فروردین 1394, 22:43 عصر
داداش ممنون وقت گذاشتی اما خوب من چون Entity نزدم زیاد متوجه منظورتون نشدم ..... توی دستوارت معمولی دستور زیر تاریخ رو حذف میکنه :
DateTime.Now.Date;
اما خوب گفتم من بحثم اصلا این نیست که تاریخ و جدا کنم یا نکنم ..... چون من هم سمت Sql میتونم زمان و از تاریخ حذف کنم هم سمت سی شارپ

بحث من سر اینه که چطور دوتا تاریخ زیر رو مثل هم بکنم :


C#‎‎‎‎‎‎
Sql



3/27/2015


2015/03/27




بیشتر بحث من اینه که وقتی میاد سمت سی شارپ صفر اول ماه رو برمیداره اما توی دیتا بیس صفر اول ماه هست شما به 3 و 03 دقت کن

این در واقع مشکل نیست، وقتی شما یه دیت تایم رو بیرون میکشی، داتنت اون دیت رو به تاریخ و فرمت نیتیو سیستم تبدیل میکنه، من حدس میزنم تاریخ سیستم شما هم همینطوریه و روز وسط نوشته شده، اینطور مواقع باید از فرمت استرینگ استفاده کنید مثل این:

DateTime thisDate1 = new DateTime(2011, 6, 10);
Console.WriteLine("Today is " + thisDate1.ToString("MMMM dd, yyyy") + ".");

اطلاعات بیشتر (https://msdn.microsoft.com/en-us/library/8kb3ddd4%28v=vs.110%29.aspx)