سلام
یه فانکشن اس کیو ال برای تاریخ شمسی می خوام.
ممنونم
سلام
فانکشن تبدیل تاریخ میلادی به شمسی در 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
مرسی
فقط یه مطلبی
چطور این رو به عنوان دیفالت ولیو هر فیلدی که میخوام استفاده کنم؟
با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)