الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

اضافة سنه و 6 اشهر على التاريخ

مغلق
بدأه charming girl في 7 يونيو 2007 · 4 رد · 680 مشاهدة · في قواعد بيانات Microsoft SQL Server
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

عندي سؤال وابغى المساعده

عندي جدول فيه عمودين تاريخ البدايه والمده وتاريخ النهايه

dateadd المستخدم سوف يقوم بالدخال تاريخ البدايه والمده واريد تلقائيا يظهر تاريخ النهايه جربت دالة

ونجحت في حالة اضافة سنه او شهر ولكن اذا اردت اضافة سنه و ستة اشهر لا استطيع فما هو الحل

#3

مشكور اخوي على السرعه في الرد ولكن عندي بعض الاستفسارات

الحل الذي ذكرته عندما اريد انا ادخال المده ولكن فلنفرض ان المستخدم يدخل المده التي يريد بهذه الصيغه 2-7 اي سنتين و سبعة اشهر

واريد من الكود ان يزيدهذه المده ويضعها في عمود تاريخ النهايه

فكرت في طريقه وحاولت اعملها وما قدرت مادري هل هي طريقه خياليه او ممكن تتننفذ

فكرت في استخدام دالة

على حقل المده واخذ الرقم الاول 2 واضافته على السنوات ثم عمل ذلك مره اخرى واخذ الرقم الثالث SUBSTRING

الي راح يكون 7 واضافته على الاشهر

واريد ايضا استخدام هذه العمليه على اكثر من جدول هل من حل واسفه على كثرة الاسئله

#4

جرب مايلي :

declare @X varchar(10)
set @x = '7-2'
select substring(@x,1, patindex('%-%',@x)-1) months ,substring(@x, patindex('%-%',@x)+1,5) years 
Result
months     years 
---------- ----- 
7          2

ويمكن الاضافة على التاريخ كما يلي :

select  dateadd ( Month , convert(tinyint, substring(@x,1, patindex('%-%',@x)-1)) , dateadd (Year ,  convert(tinyint, substring(@x, patindex('%-%',@x)+1,5)),Getdate()) )
#5

مشكور اخوي على الرد في البدايه مالمقصود ب patindex

ثانيا

راح اعرض كود وهو ميشتغل اكيد انه خطاء ارجوا ماحد يظحك منه :( لاني مبتدئه في sql واريد ان اعرف هل طريقة هذ الكود صحيحه ام لا

create function jjj
returns datetime
as
begin
declare @time int
declare @1 nvarchar(50)
declare @2 nvarchar(50)
set @1=SUBSTRING(@time, 1,1)
set @2=SUBSTRING(@time, 1,3)
select dateadd (Month ,convert(tinyint,@1), dateadd(Year ,convert(tinyint,@2),adate) )
return 
end

اعرف اني ثقلت عليكم بس والله محتاجه الحل وابي افهم بعد

وراح اشرح فكرتي من الكود

حجزت المتغير time@ الي راح يكون القيمه الموجوده في عمود المده

اما المتغير 1@ رح يكون مخزن فيه اول رقم موجود في عمود المده الي هو سبعه

اما 2@ رح يكون مخزن فيه ثالث رقم موجود في عمود المده الي هو 2

ثم بواسطة dateadd اريد ان أضيف هذه المتغيرات على التاريخ الموجود في حقل البدايه واظهار التاريخ بعد الاضافه في حقل النهايه

مادري هل هذه الطريقه صحيحه ام يوجد حل اخر

هذا الموضوع مغلق.

مواضيع مشابهة