PDA

View Full Version : سوال: مقایسه تاریخ شمسی در Sql



milad rezae
پنج شنبه 26 فروردین 1395, 16:36 عصر
با سلام و خسته نباشید خدمت دوستان
من یه جدول توی Sql Serverدرست کردم که هر رکورد شامل فیلد تاریخ شروع و تاریخ پایان می باشد. من تاریخ ها را توی sql به صورت شمسی مانند 1395-01-26 وارد کردم و توی C#‎‎‎‎‎‎‎‎ هم تاریخ شمسی را با کد زیر بدست می یارم :

string Date;
System.Globalization.PersianCalendar pc = new System.Globalization.PersianCalendar();
Date = pc.GetYear(DateTime.Now) + "-" + pc.GetMonth(DateTime.Now) + "-" + pc.GetDayOfMonth(DateTime.Now);
حالا من یه تاریخ دارم و می خام تمومه رکوردهایی که توی اون تاریخ اند را با کد زیر بدست بیارم ولی ارر میده، چه کنم؟؟ ممنون

string cmd2 = string.Format("select Poll_ID_ from Tbl_Poll where (Poll_Fdate <= {0} and Poll_Edate >= {1})", Date,Date);
راستی
Poll_Fdate و Poll_Edate فیلد های تاریخی جدول من هستن

ciavosh
پنج شنبه 26 فروردین 1395, 17:19 عصر
به فرض اینکه کار کنه هم دیتابیس میاد دو رشته رو با هم مقایسه می‌کنه نهایتاً به نتیجه نمیرسه. و احتمالاً اروری که الان میده اینه که دیتابیس نمیتونه رشته ها رو مقایسه کنه.

amirc901
پنج شنبه 26 فروردین 1395, 20:05 عصر
اقا شما یادت رفته از علامت ' (تک کوتیشن) بین تاریخ های استفاده کنی از کد زیر استفاده کن من تست کردم جواب داد
string cmd2 = string.Format("select Poll_ID_ from Tbl_Poll where (Poll_Fdate <= '{0}' and Poll_Edate >= '{1})'", Date,Date);

milad rezae
جمعه 27 فروردین 1395, 06:10 صبح
به فرض اینکه کار کنه هم دیتابیس میاد دو رشته رو با هم مقایسه می‌کنه نهایتاً به نتیجه نمیرسه. و احتمالاً اروری که الان میده اینه که دیتابیس نمیتونه رشته ها رو مقایسه کنه.

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

amirc901
جمعه 27 فروردین 1395, 07:38 صبح
درسته میگی ولی نمی تونم با Datetime هم تبدیل به تاریخش کنم

نگرفتم چی گفتین ؟

ciavosh
جمعه 27 فروردین 1395, 11:10 صبح
اینی که میگم مطمئن نیستم ولی فکر کنم راه اصولیش این باشه که تاریخ رو اول به میلادی تبدیل کنیم. دوم به فرمت تاریخی که دیتابیس ساپورت میکنه تبدیل کنیم. سودم در دیتابیس ذخیره کنیم تا بتونیم از توابع تاریخش استفاده کنیم. چهارم زمان خوندن دوباره به تاریخ شمسی تبدیل کنیم هر جایی که لازم بود.

milad rezae
شنبه 28 فروردین 1395, 04:30 صبح
اقا شما یادت رفته از علامت ' (تک کوتیشن) بین تاریخ های استفاده کنی از کد زیر استفاده کن من تست کردم جواب داد
string cmd2 = string.Format("select Poll_ID_ from Tbl_Poll where (Poll_Fdate <= '{0}' and Poll_Edate >= '{1})'", Date,Date);




ممنون به شدت، جواب داد