View Full Version : Group By روی تاریخ میلادی بصورت شمسی
merced
یک شنبه 02 اردیبهشت 1386, 06:53 صبح
می خواستم بدونم من که تاریخ رو میلادی ذخیره کردم چطوری میتونم روی ماه های شمسی group by کنم.
یه روش که قبلاً یکی بهم پیشنهاد کرده ذخیره رشته ای تاریخ شمسی توی جدول هست که خیلی نا جوره.
توی اکسس یا SQLServer میشه کدی نوشت ؟؟
این کار رو برای مثلا مقایسه پورتفوی ماهیانه انجام میدم .
dkhatibi
یک شنبه 02 اردیبهشت 1386, 08:08 صبح
تاریخ مورد نطر را ابتدا به میلادی تبدیل کنید؛ سپس می تونید مانن تاریخ میلادی به راحتی کار کنید.
SYNDROME
یک شنبه 02 اردیبهشت 1386, 20:59 عصر
با سلام
یه روش که قبلاً یکی بهم پیشنهاد کرده ذخیره رشته ای تاریخ شمسی توی جدول هست که خیلی نا جوره.
چرا؟
merced
دوشنبه 03 اردیبهشت 1386, 21:56 عصر
تاریخ بصورت رشته ای این امکان رو میده که من روی یه قسمت از تاریخ مثل دو حرف وسط گروه بندی کنم
آره ممنون باید تاریخ رو تبدیل کنم . ولی چه جوری ؟
این جور کوئری باید باشه
SELECT Month([DAT]) AS Expr1, Sum(Table1.Value) AS SumOfValue
FROM Table1
GROUP BY Month([DAT]);
SYNDROME
دوشنبه 03 اردیبهشت 1386, 22:09 عصر
با سلام
زوش یک کل تاریخ
Select Date
From Tbl_Test
Gropu By Date
روش دو فقط ماه
Select Substring(Date,3,2)
From Tbl_Test
Gropu By Substring(Date,3,2)
merced
دوشنبه 03 اردیبهشت 1386, 22:18 عصر
آره درسته
ولی اگه تاریخ ذخیره شده میلادی بود و خواستی بصورت شمسی گروه بندی بشه چیه
SYNDROME
دوشنبه 03 اردیبهشت 1386, 22:25 عصر
با سلام
یک تابع برای تبدیل در SQLبنویس.
سپس از کد مقابل استفاه کن.
Update Tbl_Test
Set Date_Shamsi = Convert(Date_Miladi)
Date_Shamsi=فیلد تاریخ شمسی
Convert=نام تابع تبدیل
Date_miladi=فیلد تاریخ میلادی
و سپس از روش گفته شده قبل برای Group By استفاده کن.
merced
دوشنبه 03 اردیبهشت 1386, 22:39 عصر
من نمی خوام تو داده های جدول دستکاری کنم. (نوشتی Update Table) شاید هم منظورت رو نگرفتم .و
ببینید . برنامه داره با تاریخ میلادی کار می کنه (یه تابع هست که تاریخ میلادی ذخیره شده رو شمسی نشون میده)
حالا اگه می شه تو اکسس یه تابع نوشت که توی اون بشه تاریخ شمسی بر گردوند (بجای میلادی ذخیره شده) یا ترفندی هست که بشه این کار رو با کد نویسی انجام داد .. البته نمی خوام یه کد نویسی طولانی با بار زیاد داشته باشه وگرنه 12 کوئری رو هم میشه نوشت که رو ماههای شمسی Select کنند و این دوارده تا رو با هم UNION کنیم ..
منطقیه ؟؟
merced
سه شنبه 04 اردیبهشت 1386, 21:41 عصر
راه حلی ندارین ؟؟
SYNDROME
چهارشنبه 05 اردیبهشت 1386, 13:44 عصر
با سلام
روش پفته شده در SQLServer بود(اکسس را خخوب بلد نیستم)
راه حل 1:
چندان جالب نیست.
شما یک While ایجاد کنید و از ابتدا تا انتها رکورد به رکورد با تابعی که در Delphi نوشته اید اطلاعات را تبدیل کنید.(گفتم روش چندان جالبی نیست)
سرعت برنامه کند می شود.
راه حل 2:
در هنگام ذخیره سازی اطلاعات تاریخ تبدیل کرده و در فیلد دیگر ذخیره کنی.
روش 2 با روشی که به صورت تابعی بود فقط یک فرق دارد.
در روش تابعی اگر رکورد از قبل ذخیره شده است هم تبدیل می شود.
ولی در روش(راه حل 2)باید هنگام ذخیره سازی اطلاعات فقط امکان پدیر است.
اگر قبلا اطلاعات ذخیره شده باشد فقط باید یکبار از ابتدا تا انتها هم رکوردها را به روز کنی.
m-khorsandi
چهارشنبه 05 اردیبهشت 1386, 14:48 عصر
احتمالاً به غیر از این راه، راه حل بهتری هم وجود داره، ولی این رو هم امتحان کن، حداقل ساختار جدولت تغییر نمیکنه.
اگه از SQL Server استفاده میکنی، یه تابع بنویس که خروجی مورد نظرت، یعنی تبدیل تاریخ میلادی به شمسی، رو بهت بده، و از اون تابع تو Group By استفاده کن :
select dbo.Fnc_ReturnDate(InfoDate)
from tab_info
group by dbo.Fnc_ReturnDate(InfoDate)
دقیقاً نمیدونم برای چه کاری داری استفاده میکنی، ولی سعی با حجم زیاد اطلاعات هم تست کنی.
merced
چهارشنبه 19 اردیبهشت 1386, 16:31 عصر
اگه از SQL Server استفاده میکنی، یه تابع بنویس که خروجی مورد نظرت، یعنی تبدیل تاریخ میلادی به شمسی، رو بهت بده، و از اون تابع تو Group By استفاده کن :
نه از اکسس استفاده می کنم. ولی یه تابع هم به زور نوشتم که توی خود اکسس درست کار می کنه ولی توی دلفی میگه اون تابع رو نمی شناسه (طبیعیه)
نمیشه یه جوری تابعی که نوشتم کامپالیی چیزی بشه که built-in به حساب بیاد ؟
دقیقاً نمیدونم برای چه کاری داری استفاده میکنی، ولی سعی با حجم زیاد اطلاعات هم تست کنی.
فرض کنید می خوام نموردار ماهانه درامد رو بکشم.
m-khorsandi
پنج شنبه 20 اردیبهشت 1386, 12:21 عصر
اگه تابعی که نوشتی مشکلی نداره و جواب میده،
به جای اینکه توی دلفی از Query استفاده کنی و Query مورد نظرت رو به همراه تابع بنویسی،
توی اکسس یه View بنویس و تابع رو توی اون به کار ببر، و اون View رو میتونی توی دلفی با Table یا Query استفاده کنی.
merced
جمعه 21 اردیبهشت 1386, 22:10 عصر
ممنونم آقای خرسندی ولی من توی Query دلفی که تابعی ننوشته ام (مگه میشه (اگر هم میشه بلد نیستم))
اگه ممکنه فایل ضمیمه رو ببینید. دقیقا همون طوره که شما گفتین.
ولی تو دلفی از Query که از این تابع اکسس استفاده کرده نمیشه استفاده کرد
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.