PDA

View Full Version : نوع داده ای timestamp



m-khorsandi
سه شنبه 20 اردیبهشت 1384, 17:34 عصر
درود
کسی از دوستان اطلاعاتی از نوع داده ای timestamp داره؟

ممنون میشم اگه راهنمائیم کنید.

titbasoft
سه شنبه 20 اردیبهشت 1384, 18:11 عصر
زمانی که می خواهید ترتیب ورود زمانی رو حفظ کنید از این نوع داده استفاده می کنید. اگر به اسمش دقت کنید بهتر متوجه خواهید شد: مهر زمانی = هر دیتا به محض ورود یک مهر می خوره که چه زمانی وارد شده.

m-khorsandi
سه شنبه 20 اردیبهشت 1384, 19:32 عصر
منظوررتون این هست که SQL Server به طور خودکار این کار رو انجام میده؟
"مهر زمانی" شامل تاریخ و ساعت هست؟

titbasoft
سه شنبه 20 اردیبهشت 1384, 19:43 عصر
منظوررتون این هست که SQL Server به طور خودکار این کار رو انجام میده؟
بله

"مهر زمانی" شامل تاریخ و ساعت هست؟
خیر. یک عدد binary ی 8 بایتی است

برای توضیح بیشتر Identity رو در نظر بگیرید و فرض کنید حتی با update شدن هم تغیر کنه که میشه timeStamp

m-khorsandi
سه شنبه 20 اردیبهشت 1384, 22:02 عصر
و چطوری میشه از اون استفاده کرد، در اصل کاربرد اون رو میخوام بدونم.

با تشکر از شما.

AminSobati
چهارشنبه 21 اردیبهشت 1384, 00:31 صبح
دوست عزیزم،
این نوع فیلد، یک عدد باینری هستش که هر وقت شما یک رکورد ایجاد کنین، این فیلد به طور اتوماتیک مقدار میگیره. هر وقت این رکورد(هر کدوم از فیلدهایش) Update بشه، مقدار TimeStamp جدید میشه.
مایکروسافت تضمین میکنه که هر مقدار TimeStamp برای دیتابیس Unique هست. یعنی حتی اگر چند جدول داشته باشین که همشون از این نوع فیلد دارند، باز مقدار تکراری در دیتابیس روی TimeStamp وجود نخواهد داشت.
اما استفاده از این نوع فیلد:
در محیط های Multi User نرم افزار شما میتونه به جای Lock کردن رکورد خوانده شده، از این فیلد استفاده کنه تا همزمانی کاهش پیدا نکنه. مثلا وقتی Query انجام میدین و به Client میبرین، این فیلد رو هم در Select قرار بدین. وقتی کاربر رکورد رو ویرایش کرد و میخواد به سرور منتقل کنه، برنامه شما مقدار TimeStamp که در جدول وجود داره رو مجددا میخونه و با مقداری که در کلاینت هست مقایسه میکنه. اگر یکسان بود، شما با خیال راحت رکورد رو Update میکنین و مطمئن هستید در طول این مدت، کاربر دیگه ای رکورد رو ویرایش نکرده (چون اگر ویرایش کرده بود، مقدار TimeStamp برای رکورد تغییر میکرد). ولی اگر یکی نبود، برنامه به کاربر Alert میده و چند انتخاب براش فراهم میکنه که اگر خواست مجددا رکورد رو از جدول بخونه و با چیزی که خودش ویرایش کرده مقایسه کنه.
این بهترین استراتژی در محیط های چند کاربره هستش که دیگه شما رکورد رو Lock نمیکنین و جلوی کار کاربران دیگه گرفته نمیشه.

m-khorsandi
چهارشنبه 21 اردیبهشت 1384, 14:48 عصر
پس از این نوع فیلد باید تو جدول یکی باشه، چون بیشتر از یکی کاربردی نداره.

AminSobati
چهارشنبه 21 اردیبهشت 1384, 14:57 عصر
دقیقا! البته بیشتر از یکی هم SQL Server اجازه نمیده برای هر جدول

m-khorsandi
چهارشنبه 21 اردیبهشت 1384, 15:02 عصر
بله،
دقیقا برای هر جدول یک فیلد از نوع TimeStamp میتونیم داشته باشیم.



'Table1' table
- Unable to modify table.
ODBC error: [Microsoft][ODBC SQL Server Driver][SQL Server]A table can only have one timestamp column. Because table 'Table1' already has one, the column 'upgrade1' cannot be added.

hr110
چهارشنبه 21 اردیبهشت 1384, 15:47 عصر
راهی وجود داره که فیلد نو TS رو به تاریخ و زمان تبدیل کرد؟ و نیازی به ایجاد یک فیلد جدید برای نگه داری زمان نباشد.

m-khorsandi
پنج شنبه 22 اردیبهشت 1384, 18:24 عصر
ممنون از تمام دوستانی که راهنمائی کردند. :flower:

night11
چهارشنبه 27 اردیبهشت 1385, 21:39 عصر
راهی وجود داره که فیلد نو TS رو به تاریخ و زمان تبدیل کرد؟ و نیازی به ایجاد یک فیلد جدید برای نگه داری زمان نباشد.

این مورد برای من هم سواله اگه از دوستان کسی لطف کنه پاسخ بده ممنون میشم

hdbplus.sr
یک شنبه 23 تیر 1387, 11:01 صبح
اگر عدد ذخیره شده(timestamp) را بر 86400 تقسیم کنید و به 00:00:00 1970/01/01 اضافه کنید تاریخ و ساعت درج رکورد را بدست خواهید آورد.