Loading…

جزیره بانک های اطلاعاتی

ارسال کننده: حسین احمدی
حسین احمدی ، بنیانگذار ITPRO ، توسعه دهنده وب و برنامه نویس ، بیش از 12 سال سابقه فعالیت حرفه ای در سطح کلان ، مشاور ، مدیر پروژه و مدرس نهادهای مالی و اعتباری ، تخصص در پلتفرم دات نت و زبان سی شارپ ، طراحی و توسعه وب ، امنیت نرم افزار ، تحلیل سیستم های اطلاعاتی و داده کاوی ...
ارسال پیام خصوصی
امتیازات این مطلب
نکته: تابع EOMONTH در SQL Server و بدست آوردن تاریخ آخرین روز ماه
در SQL Server توابع زیادی برای کار بر روی رشته ها، اعداد و تاریخ وجود دارد. یکی از توابع کاربردی کار با تاریخ تابخ EOMONTH می باشد که مخفف End Of Month است. بوسیله این تاریخ می توان تاریخ آخرین روز ماه تاریخ جاری یا تاریخی که به عنوان ورودی به آن داده می شود را بدست آورد. ساختار کلی این تابع به صورت زیر است:

EOMONTH(date)

برای مثال، فرض کنید می خواهیم تاریخ آخرین روز ماه جاری سیستم را بدست آوریم، از این تابع به صورت زیر استفاده می کنیم:

print eomonth(getdate())

به عنوان مثال دوم، فرض کنید می خواهیم تعداد روزهای باقی مانده تا انتهای ماه تاریخ ورودی را حساب کنیم، برای اینکار باید از ترکیب توابع DATEDIFF و EOMONTH به صورت زیر استفاده کنیم:

print datediff(day,getdate(),eomonth(getdate()))

تاریخ های دلخواه را هم می توان به راحتی به صورت زیر در این تابع استفاده کرد:

declare @date datetime = N'2014-08-17'
print datediff(day,@date,eomonth(@date))

از این تابع می توان در query ها بر روی جداول نیز استفاده کرد. فرض کنید جدولی به صورت زیر داریم و تعدادی تاریخ را در آن درج کردیم:

create table #Dates
(
    [Id] int identity not null primary key,
    [Date] datetime not null
);
GO

به صورت زیر می توان فاصله روزهای بین تاریخ درج شده تا آخرین روز ماه تاریخ درج شده را حساب کرد:

select [Id],DATEDIFF(day,[Date],EOMONTH([Date])) from #Dates

امیدوارم که این نکته مورد استفاده دوستان قرار بگیرد.

نویسنده: حسین احمدی
منبع: ITpro
دیدگاه ها
  • ارسال توسط:
  • زمان ارسال: 3 ماه قبل
سلام
مهندس ما در برنامه خودمان را تاریخ را بصورت شمسی نمایش می دهیم ولی بصورت میلادی در بانک ذخیره میکنیم
حال اگر بخواهیم تاریخ روز اول ماه شمسی یا تاریخ روز اول هفته جاری (شمسی)را بدست آوریم چکار باید کنیم
باتشکر
سلام ابوالفضل جان، اصولاً شما باید داخل SQL Server تاریخ رو به صورت میلادی ذخیره کنید. متاسفانه SQL Server به صورت Built-In از زبان و تقویم فارسی پشتیبانی نمیکنه، اما برای موردی که شما گفتید دو راهکار وجود داره:

  1. یکی نوشتن یک UDF در SQL Server که تبدیلی برای تاریخ شمسی به میلادی باشه و کارهای مورد نظرتون رو براتون انجام بده. میشه تابع رو به صورت CLR و مثلاً با زبان سی شارپ نوشت و در SQL Server ازش استفاده کرد.
  2. مورد دوم نوشتن یکسری Extension Method داخل خود برنامه ها هست که این کارها رو براتون انجام بده. هر دو مورد جواب میده، اما خودم به شخصه نوشتن Extension Method رو برای برنامه ها ترجیه میدم.

هر دو مورد داخل دوره های SQL Server و سی شارپ گفته میشه.
برای ارسال نظر وارد شوید.