PDA

View Full Version : مقایسه فیلد زمان رکوردها



sara_aryanfar
چهارشنبه 03 تیر 1394, 11:10 صبح
با سلام فرض کنید ما یک جدول داریم حاوی تعدادی رکورد حالی می خواهیم توسط چند برنامه جدا از هم این رکوردها رو در بازه زمانی خاص به روز کنیم طوری که وقتی یک رکورد توسط یک نرم افزار به روزرسانی شد تا مثلا چند دقیقه نرم افزار های دیگه نتونن اون رو به روزرسانی کنن دوستان چه پیشنهادی برای این کار دارن من خودم اینطور به ذهنم اومد که یک فیلد داشته باشم از نوع datatime

تا آخرین زمان تغییر رو در موقعی که نرم افزار درخواست می کنه مورد بررسی قرار بدم

alireza264
چهارشنبه 03 تیر 1394, 12:11 عصر
سلام بهترین راه حل همینه که گفتی
اما میتونی یه لیست حاوی کلید رکورد و تاریخ و زمان آپدیت بسازی و هر رکوردی که خواست آپدیت بشه اول توی لیست جستجو بشه اگه وجود داشت تاریخ و ساعت بررسی بشه ودر صورت تایید فرآیند آپدیت و اگه وجود نداشت آپدیت انجام بشه و اطلاعاتش تو لیست ثبت بشه
اینجوری زمان رفت وبرگشت به دیتا بیس هم کمتر میشه

sara_aryanfar
چهارشنبه 03 تیر 1394, 16:43 عصر
سلام بهترین راه حل همینه که گفتی
اما میتونی یه لیست حاوی کلید رکورد و تاریخ و زمان آپدیت بسازی و هر رکوردی که خواست آپدیت بشه اول توی لیست جستجو بشه اگه وجود داشت تاریخ و ساعت بررسی بشه ودر صورت تایید فرآیند آپدیت و اگه وجود نداشت آپدیت انجام بشه و اطلاعاتش تو لیست ثبت بشه
اینجوری زمان رفت وبرگشت به دیتا بیس هم کمتر میشه

خب این روش باعث ایجاد سربار زیاد میشه در دیتابیس در واقع من می خوام هر بار 5 رکورد از دیتابیس بگیرم شرایط رکورد هم به این صورت باشه که آخرین زمان آپدیت این رکورد ها مال 10 دقیقه قبل باشن فکر کنم بشه با یک کوئری توسط خود دیتابیس این کارو کرد دوستان ممنون میشم راهنماییی کنن

alireza264
چهارشنبه 03 تیر 1394, 18:59 عصر
خب این روش باعث ایجاد سربار زیاد میشه در دیتابیس در واقع من می خوام هر بار 5 رکورد از دیتابیس بگیرم شرایط رکورد هم به این صورت باشه که آخرین زمان آپدیت این رکورد ها مال 10 دقیقه قبل باشن فکر کنم بشه با یک کوئری توسط خود دیتابیس این کارو کرد دوستان ممنون میشم راهنماییی کنن

سربار دیتابیس زیاد نمیشه چون تو برنامه ابتدا انجام میشه ولی دستورات زیر برای Sql وجو داره

GETDATE() Returns the current date and time
DATEPART() Returns a single part of a date/time
DATEADD() Adds or subtracts a specified time interval from a date
DATEDIFF() Returns the time between two dates

میتونی از datedef استفاده کنی که مقدار بازگشتیش یه عدد int هستش

DATEDIFF ( datepart , startdate , enddate )

datepart نوع مقدار بازگشتیه که مقایسه بر اساس چی باشه



datepart
Abbreviations


year
yy, yyyy


quarter
qq, q


month
mm, m


dayofyear
dy, y


day
dd, d


week
wk, ww


hour
hh


minute
mi, n


second
ss, s


millisecond
ms


microsecond
mcs


nanosecond
ns




مثال

select top 5 *
from mytable
having DateDef(minute , Field_Mydate, GETDATE())> 5


برای اطلاعات بیشتر
https://msdn.microsoft.com/en-us/library/ms189794.aspx