PDA

View Full Version : سوال: در نوشتن یک کوئری کمک کنین



saldin
جمعه 11 تیر 1389, 18:28 عصر
سلام دوستان
من در دیتابیس یک فیلد تاریخ دارم حالا برای اینکه بتونم واسه یک ماه مشخص
( select)
بزنم، باید پارامترتاریخ رو چطوری مشخص کنم؟
اصلا همچین چیزی ممکنه که فقط مقدار ماه رو مشخص کنم و به روز وسال کاری نداشته باشم؟ در صورتیکه فیلد تاریخ در دیتابیس شامل هر 3تای روز وماه وسال هست که با علامت "/" از هم جداشدن
یه سوال دیگه: باید تاریخ رو از نوع ان ور کر یا دیت تایم در دیتا بیس ذخیره کنم که بشه همچین کوئری نوشت؟

hamid67fathi
جمعه 11 تیر 1389, 18:35 عصر
اگر DateTime باشه ميشه ..
در ضمن راحت ترين راه اينه که امتحان کنی.

L_eskandary
جمعه 11 تیر 1389, 21:35 عصر
دوست عزیز سلام
اول یه توصیه : موقع طراحی database‌اگه دیدی بعدا نیاز هست که بر اساس روز و ماه و سال جداگانه گزارش بگیری بهتره از همون اول تو database‌ فیلد های جدا براشون در نظر بگیری .
من اصولا تاریخ رو به nvarchar‌ ذخیره می کنم چون ایجوری خیلی راحت میشه با substring‌رشته ی مورد نظرت رو جدا کنی . حالا اگه شما تاریخ رو تو یه فیلد و به صورت سال و ماه و روز ذخیره کردین خوب برا این کار می تونین فقط دو کاراکتر مربوط به ماه رو انتخاب کنین . برا این کار هم از substring استفاده کنین .

jimi67
جمعه 11 تیر 1389, 23:01 عصر
دوست عزیز سلام
اول یه توصیه : موقع طراحی database‌اگه دیدی بعدا نیاز هست که بر اساس روز و ماه و سال جداگانه گزارش بگیری بهتره از همون اول تو database‌ فیلد های جدا براشون در نظر بگیری .
من اصولا تاریخ رو به nvarchar‌ ذخیره می کنم چون ایجوری خیلی راحت میشه با substring‌رشته ی مورد نظرت رو جدا کنی . حالا اگه شما تاریخ رو تو یه فیلد و به صورت سال و ماه و روز ذخیره کردین خوب برا این کار می تونین فقط دو کاراکتر مربوط به ماه رو انتخاب کنین . برا این کار هم از substring استفاده کنین .

سلام

با احترام به نظر دوست خوبمون باید بگم وقتی برای نوع داده ی DateTime توابع توی خود SQL تعریف شده دیگه چه نیازی به این کار هست.
راه حل:
داده رو از نوع DateTime تعریف کنید. فقط یه فیلد. میتونید برای جداسازی ماه از فیلد تاریخ به شکل زیر عمل کنید:

SELECT DATEPART(mm, getdate())
این تکه کد T-SQL عدد مربوط به ماه رو از تاریخ جاری برگردونده و نمایش میده. به جای getdate() می تونید تاریخ دلخواهتونو قرار بدید.

موفق باشید.

Majid&Masoud
جمعه 11 تیر 1389, 23:08 عصر
سلام
اگه براتون امکان داره میتونید از SQL 2008 استفاده کنید که تاریخ شمسی رو هم پشتیبانی میکنه
در ضمن میتونید اونو از نوع Date تعریف کنید که فقط تاریخ رو ذخیره میکنه و دیگه ساعت رو کنارش نمیاره و با استفاده از تابع ()Month ماه رو بدست بیارید

mostafa_zainy
شنبه 12 تیر 1389, 00:52 صبح
سلام
اگه براتون امکان داره میتونید از SQL 2008 استفاده کنید که تاریخ شمسی رو هم پشتیبانی میکنه
در ضمن میتونید اونو از نوع Date تعریف کنید که فقط تاریخ رو ذخیره میکنه و دیگه ساعت رو کنارش نمیاره و با استفاده از تابع ()Month ماه رو بدست بیارید

دوست عزیز ، در Sql Sever 2008 من چه تنظیماتی رو باید انجام بدم تا تاریخ رو بصورت شمسی قبول کنه «مثلا برای فیلد تولد از همون نوع Date در نظر بگیرم؟»

mojtabamalaekeh
شنبه 12 تیر 1389, 04:19 صبح
سلام دوستان
من در دیتابیس یک فیلد تاریخ دارم حالا برای اینکه بتونم واسه یک ماه مشخص
( select)
بزنم، باید پارامترتاریخ رو چطوری مشخص کنم؟
اصلا همچین چیزی ممکنه که فقط مقدار ماه رو مشخص کنم و به روز وسال کاری نداشته باشم؟ در صورتیکه فیلد تاریخ در دیتابیس شامل هر 3تای روز وماه وسال هست که با علامت "/" از هم جداشدن
یه سوال دیگه: باید تاریخ رو از نوع ان ور کر یا دیت تایم در دیتا بیس ذخیره کنم که بشه همچین کوئری نوشت؟



سلام

Select * From Table_Name Where Month(Field_Name)=[]در مورد ذخیره تاریخ در نرم افزارهای بانک اطلاعاتی قبلاً خیلی با خودم کلنجار میرفتم :عصبانی++:
الان 3-4 ساله با خیال راحت تاریخ رو که از کاربر گرفتم به میلادی تبدیل می کنم و در فیلدی از نوع Date/Time ذخیره می کنم.
موقع نمایش هم اون تاریخ رو به شمسی برمیگردونم و به کاربر نشون میدم.
تو مثالی که زدم کافیه نام Table و نام Field تاریخ رو طبق جدول خودتون تغییر بدین.
از [] هم برای پویا بودن ورودی استفاده کردم که میتونید یک مقدار ثابت بجاش بذارین:

Select * From tblBuyFactor Where Month(fDate)=7موفق باشید.

و اما سؤال خودم که به دلیل تناسب با عنوان این تاپیک همینجا مطرحش می کنم:

یه بانک اکسس ضمیمه کردم (http://mojtabamalaekeh.persiangig.com/other/Year89/Shop.rar) که اگه زحمت بکشین بازش کنید ممنون میشم.
من برای هر فاکتور کد فروشنده و تاریخ رو دریافت کردم
در جدول اقلام فاکتور که با کد فاکتور به جدول قبلی متصل میشه، لیست کالاهای خریداری شده از اون فروشنده رو دارم.
از Join کردن جدول اقلام فاکتور با جدول فاکتور، چیزی مثل این عکس بدست میاد:
http://mojtabamalaekeh.persiangig.com/image/MyProblems/Table_1.bmp
این هم کد Join کردن:

Select
tblBuyFactor.fDate,
tblBuyFactorItems.fProductID,
tblBuyFactorItems.fSinglePrice
From tblBuyFactor
Inner Join tblBuyFactorItems
On tblBuyFactor.fBuyFactorID = tblBuyFactorItems.fBuyFactorID
Where tblBuyFactor.fProviderID=[]این رکوردها همه مال یک فروشنده هستند اما تو تاریخ های مختلف هر کالایی رو با قیمتهای متفاوتی فروخته که در این مثال دو کالای 12 و 15 رو داریم.
من از هر نمونه کالا فقط جدیدترین قیمت رو میخوام :متفکر:
یعنی خروجی باید این باشه:
http://mojtabamalaekeh.persiangig.com/image/MyProblems/Table_2.bmp
چون آخرین باری که کالای 12 فروش رفته در تاریخ 27-3-2010 به قیمت 55 ریال بوده
و جدیدترین تاریخی که کالای 15 فروش رفته 28-3-2010 به قیمت 20 ریال بوده.
فیلد تاریخ هم از نوع DateTime است.
خیلی ممنون میشم اگه راهنمایی بفرمایید. :تشویق: