View Full Version : اختلاف بین دو تاریخ
bazikadeh
جمعه 30 آبان 1393, 18:19 عصر
من یک جدول دارم 2 فیلد برای تاریخ به میلادی هست
و یک فیل برای اختلاف روز های بین این دو
حالا چی کنم به صورت اتوماتیک این کار انجام بشه؟؟؟
mahllaa
جمعه 30 آبان 1393, 19:13 عصر
فیلد تاریخ باید بین دو مقدار باشه
برای اینکه اتوماتیک باشه میتونید از getdate() و یا datediff() استفاده کنید
به شکل زیر:
DATEDIFF ( datepart , startdate , enddate )
bazikadeh
جمعه 30 آبان 1393, 20:13 عصر
یکم بیشتر توضیح میدین ؟ این چیه و باید کجا بزاریم ؟ نمونه ندارین ؟
mahllaa
جمعه 30 آبان 1393, 21:46 عصر
مثلا این کد اطلاعات رو در دو ماه گذشته بررسی میکنه و نشون میده
select * from customer
where cu_code
in(select cu_code from sell
where f_ID
in(select f_ID from factor
where f_date between DATEADD(month, -2, GETDATE())
and DATEADD(month, 0, GETDATE())
bazikadeh
جمعه 30 آبان 1393, 22:04 عصر
خوب چطوری همزان درج این را استفاده کنم ؟
-------------
اینو کجاش بزارم ؟
DATEDIFF ( datepart , startdate , enddate )
mahllaa
جمعه 30 آبان 1393, 22:26 عصر
<font color="#000000"><span style="font-family: Consolas">DATEDIFF ( day, getdate(), getdate()-30)</span></font>
راستش من طراحی سایت با دیتابیس کارنکردم
اما فکر میکنم این مدلی درست باشه شایدم نباید اینجا نوشته بشه
bazikadeh
جمعه 30 آبان 1393, 22:35 عصر
ببخشید من اشتباهی پس اینجا تاپیک زدم شرمنده
-----------
تحت ویندوز میخوام
sajadsobh
جمعه 30 آبان 1393, 22:37 عصر
خوب چطوری همزان درج این را استفاده کنم ؟
-------------
اینو کجاش بزارم ؟
DATEDIFF ( datepart , startdate , enddate )
شما وقتی پروسجر واسه درج می نویسی باید به یه سری متغیر مقداردهی کنی.
برای مثال:
CREATE PROC sp_ins
@startdate datetime,
@enddate datetime
AS
BEGIN
INSERT INTO table1 (startdate, enddate, days)
VALUES (@startdate, @enddate, DATEDIFF(day, @startdate, @enddate))
END
ما اومدیم تعداد روزهایی که این دو تا تاریخ باهم اختلاف دارند رو توی فیلد days ذخیره کردیم.
bazikadeh
جمعه 30 آبان 1393, 23:25 عصر
مثلا میشه بگیم این تعداد روز رو ضربدر یک فیلد دیگه کنه ؟
sajadsobh
شنبه 01 آذر 1393, 00:10 صبح
مثلا میشه بگیم این تعداد روز رو ضربدر یک فیلد دیگه کنه ؟
CREATE PROC sp_ins
@startdate datetime,
@enddate datetime,
@tedad int
AS
BEGIN
DECLARE @days int
SET @days = DATEDIFF(day, @startdate, @enddate)
INSERT INTO table1 (startdate, enddate, days, tedad, result)
VALUES (@startdate, @enddate, @days, @tedad, @days*@tedad)
END
bazikadeh
پنج شنبه 06 آذر 1393, 18:29 عصر
یک سوال اگه دو تاریخ یکی بود صفر بر میگردونه نمیشه جلوی این کار را گرفت ؟
sajadsobh
پنج شنبه 06 آذر 1393, 18:44 عصر
خودت میخوای چی نشون داده بشه؟
bazikadeh
پنج شنبه 06 آذر 1393, 18:47 عصر
مثلا اختلاف شد اگه 0 به جای اون 1 بزاره وگرنه اختلاف رو حساب کنه
alireza_s_84
پنج شنبه 06 آذر 1393, 23:35 عصر
مثلا اختلاف شد اگه 0 به جای اون 1 بزاره وگرنه اختلاف رو حساب کنه
SET @days = CASE WHEN DATEDIFF(DAY, @startdate, @enddate) = 0 THEN 1 ELSE DATEDIFF(DAY, @startdate, @enddate) END
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.