PDA

View Full Version : سوال: استخراج تاریخ میلادی و تبدیل به شمسی در Select



baran_mehr
چهارشنبه 02 بهمن 1387, 22:08 عصر
ایا میشه وقتی یه تاریخ میلادی رو با select استخراج میکنیم اون رو به شمسی تبدیل کنیم و برگردونیم:متفکر:

mannai29
پنج شنبه 03 بهمن 1387, 08:07 صبح
بله میشه باید یک تابع بسازید و از اون استفاده کنید. مانند :

select Function1(DateMiladi) from TBL1

این تابع رو هم اگر در این سایت یک جستجوی ساده بکنید پیدا می کنید.

baran_mehr
پنج شنبه 03 بهمن 1387, 12:32 عصر
دوست عزیز من بدون استفاده از تابع میخوام.یعنی با همون دستور Slect این کار رو انجام بدیم

slashslash2009
پنج شنبه 03 بهمن 1387, 13:54 عصر
خوب نمیشه اینکارو کرد . تازه شما تاریخ شمسی رو نمی تونید به صورت یک فیلد از جنس date ذخیره کنید باید یه کار دیگش کنی مثلا از جنس یه رشته در نطر بگیریش

baran_mehr
پنج شنبه 03 بهمن 1387, 15:11 عصر
خوب این عیبی نداره که تاریخ از جنس رشته ای باشه، بیشتر میخوام که این کار تو همون دستور Slect انجام بشه.

mannai29
شنبه 05 بهمن 1387, 08:36 صبح
دوست عزیز من بدون استفاده از تابع میخوام
فکر نکنم در مطرح کردن موضوعتون این نکته رو گفته باشین !
در هر صورت شما وقتی تاریخ رو به هر فرمتی ، اما میلادی درج کنید برای تبدیل اون به شمسی باید یک سری عملیات روی آن انجام دهید مگر غیر از اینه ؟
حالا مجموع این عملیات را میتوانید تبدیل به تابع کنید یا نکنید و ..
شما هم نمی خواهید عملیاتی انجام دهید و هم تاریخ را فارسی می خواهید ؟!!!

emad11
دوشنبه 07 بهمن 1387, 11:26 صبح
بله میشه :

این کد تابع رو خودم نوشتم می تونی ازش استفاده کنی .
پارامتر k متغیریه که باید تاریخ میلادی که از db استخراج کردی داخلش بریزی. متغیر ouput هم از نوع ارجاعه که میشه خروجیت :


Sub PersianDate(ByRef Output As String,Byval k as string)
Dim Today, Month As String
Dim Per As New System.Globalization.PersianCalendar
k = CStr(Date.UtcNow.Year) & "/" & CStr(Date.UtcNow.Month) & "/" & CStr(Date.UtcNow.AddHours(3.5).Day)
Select Case Date.UtcNow.AddHours(3.5).DayOfWeek
Case 0
Today = " یکشنبه "
Case 1
Today = " دوشنبه "
Case 2
Today = " سه شنبه "
Case 3
Today = " چهارشنبه "
Case 4
Today = " پنج شنبه "
Case 5
Today = " جمعه "
Case 6
Today = " شنبه "
End Select
Select Case Per.GetMonth(k)
Case 1
Month = " فروردین "
Case 2
Month = " اردیبهشت "
Case 3
Month = " خرداد "
Case 4
Month = " تیر "
Case 5
Month = " مرداد "
Case 6
Month = " شهریور "
Case 7
Month = " مهر "
Case 8
Month = " آبان "
Case 9
Month = " آذر "
Case 10
Month = " دی "
Case 11
Month = " بهمن "
Case 12
Month = " اسفند "
End Select
Output = " امروز : " & Today & Per.GetDayOfMonth(k) & " " & Month & "سال " & Per.GetYear(k)
End Sub

banitaba
چهارشنبه 09 بهمن 1387, 11:35 صبح
به نظر من موقع ذخیره تاریخ از این تابع استفاده کن تا موفع واکشی نیازی با اعمال تابع نداشته باشی
البته فیلد تاریخ را در بانک باید از نوع string در نظر بگیری

shima_hamedi
چهارشنبه 09 بهمن 1387, 14:44 عصر
من پیشنهاد می کنم که یکجدول ساخته که در آن تاریخهای شمسی ومیلادی را به صورت معادل داشته باشید و با Join آن با هر جدول دیگر ذخیره کردن در جدول اصلی خود فیلد ها را معادل شمسی ومیلادی ذخیره کرده و در صورت نیاز با یک گوری ساده می توان خروجی گرفت

baran_mehr
چهارشنبه 09 بهمن 1387, 16:42 عصر
emad11 جان کد شما بدرد زمانمی میخوره که ما بخوایم از طریق برنامه مثلا ویبی این کار رو انجام بدیم و مقدار رو تو برنامه تبدیل کنیم و به دیتابیس بفرستیم. banitaba جان نظر شما هم همانند دوستمون هست .
اما مساله اینکه من یه ستون از تاریخ های میلادی دارم و باید موقع استخراج اطلاعات اونها رو تبدیل کنم.
shima_hamedi جان نمیدونم منظورتون رو درست متوجه شدم یا نه. اما به نظرم این شیوه خیلی زمان بر میشه تازه من باید یه جدول از تاریخ های شمسی رو هم اماده کنم

linux
چهارشنبه 09 بهمن 1387, 17:41 عصر
emad11 جان کد شما بدرد زمانمی میخوره که ما بخوایم از طریق برنامه مثلا ویبی این کار رو انجام بدیم و مقدار رو تو برنامه تبدیل کنیم و به دیتابیس بفرستیم. banitaba جان نظر شما هم همانند دوستمون هست .
اما مساله اینکه من یه ستون از تاریخ های میلادی دارم و باید موقع استخراج اطلاعات اونها رو تبدیل کنم.
shima_hamedi جان نمیدونم منظورتون رو درست متوجه شدم یا نه. اما به نظرم این شیوه خیلی زمان بر میشه تازه من باید یه جدول از تاریخ های شمسی رو هم اماده کنم

به هر حال باید از توابع استفاده کنی.
اگر از 2005 استفاده می کنید که می توانید از توابع CLR استفاده کنید ، اگر هم که دارید 2000 استفاده می کنید ، توابعی زیادی دوستان قبلا معرفی کردند.