سلام
یه فانکشن اس کیو ال برای تاریخ شمسی می خوام.
ممنونم
سلام
فانکشن تبدیل تاریخ میلادی به شمسی در SQL Server
CREATE FUNCTION [dbo].[SolarDate] ( @ADate DATETIME ) RETURNS VARCHAR(200) AS BEGIN DECLARE @BaseDate INT DECLARE @BaseYear INT DECLARE @LongYearFlag BIT DECLARE @TotalDay INT DECLARE @PastYears INT DECLARE @LongYearCounter FLOAT DECLARE @RemindDays INT DECLARE @FYear INT DECLARE @FMonth INT DECLARE @FDay INT DECLARE @FStrYear VARCHAR(4) DECLARE @FStrMonth VARCHAR(2) DECLARE @FStrDay VARCHAR(2) SET @BaseDate = -11243 SET @BaseYear = 1248 SET @TotalDay = FLOOR(CONVERT(FLOAT, @ADate) - @BaseDate) SET @PastYears = @TotalDay / 365 SET @LongYearCounter = 4.1290322580645161290322580645161 SET @RemindDays = ( @TotalDay % 365 ) - FLOOR(( @PastYears + 0.9 ) / @LongYearCounter) SET @FYear = @PastYears + @BaseYear IF @RemindDays < 0 BEGIN IF ( ( ( @PastYears + 0.9 ) / @LongYearCounter ) - FLOOR(( @PastYears + 0.9 ) / @LongYearCounter) ) <= 0.25 SET @LongYearFlag = 1 ELSE SET @LongYearFlag = 0 IF @LongYearFlag = 1 BEGIN SET @RemindDays = @RemindDays + 366 SET @FYear = @FYear - 1 END ELSE BEGIN SET @RemindDays = @RemindDays + 365 SET @FYear = @FYear - 1 END END IF @RemindDays <= 186 BEGIN SET @FMonth = ( @RemindDays / 31 ) + 1 SET @FDay = ( @RemindDays % 31 ) + 1 END ELSE BEGIN SET @RemindDays = @RemindDays - 186 SET @FMonth = ( @RemindDays / 30 ) + 7 SET @FDay = ( @RemindDays % 30 ) + 1 END SET @FStrYear = CONVERT(VARCHAR(4), @FYear) SET @FStrMonth = CONVERT(VARCHAR(2), @FMonth) SET @FStrDay = CONVERT(VARCHAR(2), @FDay) IF LEN(@FStrMonth) < 2 SET @FStrMonth = '0' + @FStrMonth IF LEN(@FStrDay) < 2 SET @FStrDay = '0' + @FStrDay RETURN @FStrYear + '/' + @FStrMonth + '/' + @FStrDay END
مرسی
فقط یه مطلبی
چطور این رو به عنوان دیفالت ولیو هر فیلدی که میخوام استفاده کنم؟
هیچ کاربری تا کنون از این پست تشکر نکرده است
با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)