در دو درس گذشته با DataType ای که با هم نوشتیم؛ میتوانستیم این پرسوجوها را داشته باشیم:
که در نهایت خروجی کار به شکل زیر خواهد بود:
محتویات فایل بازشده را حذف کنید و دستورهای زیر را جایگزین کنید:
بار دیگر پروژه را به روشی که در درس یک آموزش داده شد؛ Publish کنید. اکنون میتوانیم تاریخ و زمان کنونی را در متغیری از نوع JalaliDate وارد کنیم.
یا به این شکل تاریخ و زمان جاری را مشاهده کنیم:
دنباله دارد...
Declare @MyDate JalaliDate = '1392/02/11 21:38:24' Select @MyDate.ToString() as MyDateTime , @MyDate.GetDate() as MyDate , @MyDate.GetTime() as MyTime , @MyDate.Year as MyYear , @MyDate.Month as MyMonth , @MyDate.Day as MyDay , @MyDate.Hour as MyHour , @MyDate.Minute as MyMinute , @MyDate.Second as MySecond , @MyDate.JalaliDateAdd('Year',1) as NextYear , @MyDate.JalaliDateAdd('Month',1) as NextMonth , @MyDate.JalaliDateAdd('Day',1) as NextDay , @MyDate.JalaliDateAdd('Hour',1) as NextHour , @MyDate.JalaliDateAdd('Minute',1) as NextMinute , @MyDate.JalaliDateAdd('Second',1) as NextSecond
با این همه، همانسان که در پرسوجوی بالا هم میبینید؛ ناگزیر شدم تاریخ و زمان را خودم وارد کنم و هرآینه در واقعیت شما جهت پرسوجو روی زمان کنونی، ناگزیر به استفاده از یک تابع برای تبدیل تقویم میلادی به خورشیدی هستیم. به نظر شما بهتر نیست دست به کار شویم و تابعی برای تبدیل تاریخ میلادی به خورشیدی بنویسیم؟
برای اینکار پروژهای را که در دو درس 1 ساختیم باز کنید و سپس روی نام پروژه در Solution Explorer راستکلیک کرده و Add New Item را انتخاب کنید.
محتویات فایل بازشده را حذف کنید و دستورهای زیر را جایگزین کنید:
using System; using System.Data; using System.Data.SqlClient; using System.Data.SqlTypes; using Microsoft.SqlServer.Server; public partial class UserDefinedFunctions { [Microsoft.SqlServer.Server.SqlFunction] public static JalaliDate GetCurrentDateTime() { System.Globalization.PersianCalendar pers = new System.Globalization.PersianCalendar(); DateTime CurrentDate = DateTime.Now; JalaliDate jl; jl.Year = (Int16)pers.GetYear(CurrentDate); jl.Month = (byte)pers.GetMonth(CurrentDate); jl.Day = (byte)pers.GetDayOfMonth(CurrentDate); jl.Hour = (byte)pers.GetHour(CurrentDate); jl.Minute = (byte)pers.GetMinute(CurrentDate); jl.Second = (byte)pers.GetSecond(CurrentDate); return jl; } }
Declare @MyDate JalaliDate = dbo.GetCurrentDateTime()
Select dbo.GetCurrentDateTime().ToString()
