PDA

View Full Version : سوال: اضافه كردن تاريخ



mandana.k
دوشنبه 30 دی 1387, 14:26 عصر
دوستان من يك برنامه دارم كه مي خواهم يكي از فيلدهاي جدولم كه string(10 است وبه صورت
زير ذخيره مي شود 20/01/1387 را با يك مقدار int مثلا 30 جمع كنم وتاريخ درست يعني 19/02/1387 را به من بدهد لطفا راهنماييم كنيد بايد چه كار كنم خيلي برام مهمه.....:متفکر:

samispeed
دوشنبه 30 دی 1387, 16:45 عصر
Dim date1, date2 As New Date
date2 = "1378/1/20"
date1 = DateAdd(DateInterval.Day, 30, date2)
شاید چون فارسی در تمام حالت ها جواب نده امتحان نکردم
بهتر تاریخ رو به میلادی تبدیل کنی بعد با این دستور جمع کنی و تاریخ به دست آمده رو به شمسی تبدیل کنب

davoodrm666_666
سه شنبه 01 بهمن 1387, 08:12 صبح
من یک فانکشن برای این کار نوشته بودم البته شما باید / های تاریخ رو قبل از فراخوانی فانکشن حذف کنی


select dbo.nDayLater (13870120, 30)


اینم کد فانکشن


CREATE FUNCTION dbo.nDayLater (@dblDate int , @nNextDay int)
RETURNS int AS
BEGIN Declare @L nvarchar(2000)
Declare @D int
Declare @m int
Declare @Y int
Declare @dd nvarchar(50)

Declare @MM nvarchar(50)
Declare @YY nvarchar(50)
Declare @nDayLater int
set @L=cast(@dblDate as nvarchar)
If @L = '0'
begin
Set @nDayLater = 0
End
set @Y=cast(substring(@L,1,4) as int)
set @m=cast(substring(@L,5,2) as int)
set @D=cast(substring(@L,7,2) as int)
set @D=@D + @nNextDay
set @Y = @Y + cast((@D / 365) as int)
set @D = dbo.Mod(@D, 365)
If @D = 0
Begin
set @Y = @Y - 1
set @D = 365
End
While @D >= 29
Begin
If dbo.Mod(@M, 12) >= 1 And dbo.Mod(@M, 12) <= 6
Begin
If @D <= 31 BREAK
set @D = @D - 31
set @M = @M + 1
End
If dbo.Mod(@M, 12) >= 7 And dbo.Mod(@M, 12) <= 11
Begin
If @D <= 30 BREAK
set @D = @D - 30
set @M = @M + 1
End
If dbo.Mod(@M, 12) = 0
Begin
If @D <= 29 BREAK
set @D = @D - 29
set @M = @M + 1
End
End
If @m > 12
begin
set @Y = @Y + cast((@m / 12) as int)
set @m = dbo.Mod(@m, 12)
If @m = 0
begin
set @m = 12
set @Y = @Y - 1
End
End
set @YY = LTrim(RTrim(@Y))
set @dd = Right('0' + LTrim(RTrim(@D)), 2)
set @MM = Right('0' + LTrim(RTrim(@m)), 2)
set @nDayLater = cast(@YY + @MM + @dd as int)
RETURN @nDayLater
END

mandana.k
سه شنبه 01 بهمن 1387, 08:17 صبح
دوست عزيز از راهنمايي شما خيلي ممنون اين دستور رابراي تاريخ فارسي چك كردم جواب مي دهد:لبخند: