PDA

View Full Version : فیلدهای تاریخ و زمان در SQL



Amir Taghavi
جمعه 12 اسفند 1384, 10:22 صبح
سلام

1- چطوری میشه که تاریخ شمسی رو در فیلدهای DateTime و یا smallDatetime قرار داد تا بشه اختلاف تاریخ ها رو حساب کرد؟

2- برای گرفتن اختلاف زمان و یا جمع کردن دو زمان از چه توابعی باید استفاده کنم ؟

با تشکر

M.kavyani
جمعه 12 اسفند 1384, 11:41 صبح
با سلام
دوست عزیز شما نمی توانید در فیلد های تاریخ تاریخ شمسی را وارد کنید. و به تبع شما نمی توانید عملیاتی روی آن از نظیر جمع و تفریق و... را انجام بدهید. یه شیوه پیشنهاد شده از طرف آقای ثباتی رو بیان میکنم امیدوارم که به کارت بیاید.
شما برای ذخیره تاریخ های شمسی از دو فیلد استفاده کنید. یکی از نوع Nchar و دیگر ای نوع DateAndTime که در اولی تاریخ شمسی رو ذخیره میکنید و در دومی تاریخ میلادی را. اولی را برای نمایش در نظر بگیرد و دومی را در پشت صحنه جهت تبدیلات.
در پناه حق موفق و کامروا باشید

ehsan_ansaripoor
جمعه 12 اسفند 1384, 14:31 عصر
دوست عزیز استفاده از فیلد DateTime برای تاریخ شمسی با مشکل مواجه میشه و شما برای این کار از فیلدهای Text یا Chr استفاده کنید.

برای مشکل گرفتن اختلاف هم باید یک الگوریتم بنویسید که این کار را برای شما انجام بده.

M.kavyani
جمعه 12 اسفند 1384, 21:14 عصر
دوست عزیز استفاده از فیلد DateTime برای تاریخ شمسی با مشکل مواجه میشه و شما برای این کار از فیلدهای Text یا Chr استفاده کنید.

برای مشکل گرفتن اختلاف هم باید یک الگوریتم بنویسید که این کار را برای شما انجام بده.
اگر از تاریخ میلادی استاده کنه دیگه نیاز به نوشتن تابعی نداره چون خود SQL این توابع رو داره.

Amir Taghavi
شنبه 13 اسفند 1384, 08:25 صبح
با سلام
دوست عزیز شما نمی توانید در فیلد های تاریخ تاریخ شمسی را وارد کنید. و به تبع شما نمی توانید عملیاتی روی آن از نظیر جمع و تفریق و... را انجام بدهید. یه شیوه پیشنهاد شده از طرف آقای ثباتی رو بیان میکنم امیدوارم که به کارت بیاید.
شما برای ذخیره تاریخ های شمسی از دو فیلد استفاده کنید. یکی از نوع Nchar و دیگر ای نوع DateAndTime که در اولی تاریخ شمسی رو ذخیره میکنید و در دومی تاریخ میلادی را. اولی را برای نمایش در نظر بگیرد و دومی را در پشت صحنه جهت تبدیلات.
در پناه حق موفق و کامروا باشید

سلام من هم همینکار رو کردم ولی می خواستم ببینم روشم درست هست یا نه روش دیگری هم وجود دارد! از پاسخ شما هم ممنونم.

kian
شنبه 13 اسفند 1384, 10:24 صبح
به نظر من هم شما باید تاریخ ها را به فرم میلادی در database ذخیره کنید و به هنگام نمایش تبدیل به تاریخ شمسی کنید. البته بایستی دو تابع برای تبدیل به میلادی و بالعکس نیز در database تعریف کنید که مستقیماً در query تاریخ را تبدیل نماید.

M.kavyani
شنبه 13 اسفند 1384, 14:17 عصر
به نظر من هم شما باید تاریخ ها را به فرم میلادی در database ذخیره کنید و به هنگام نمایش تبدیل به تاریخ شمسی کنید. البته بایستی دو تابع برای تبدیل به میلادی و بالعکس نیز در database تعریف کنید که مستقیماً در query تاریخ را تبدیل نماید.
این کار باعث زمان بردن و کاهش سرعت میشه.( زمان بردن از این جهت که شما در جاهای مختلف به این نیاز دارید که دستورات تبدیل رو بنویسد. هرچند که این تبدیلات به صورت کامپوننت وجود دارند) هرچند که محسوس نباشه. در مواردی هم که مشکلی خیلی عمیق میشه مثلا" هنگام گزارش گیری با کریستال.

ehsan_ansaripoor
شنبه 13 اسفند 1384, 23:36 عصر
البته در مواردی مثل اختلاف گرفتن بین دو تاریخ در صورتی که تاریخ هم به صورت میلادی و هم به صورت شمسی باشه راهکار بسیار خوبیه ولی در مواردی که حجم اطلاعات زیاد باشه نوشتن یک تابع تا حد زیادی مشکلات را حل می کنه.

M.kavyani
یک شنبه 14 اسفند 1384, 00:21 صبح
البته در مواردی مثل اختلاف گرفتن بین دو تاریخ در صورتی که تاریخ هم به صورت میلادی و هم به صورت شمسی باشه راهکار بسیار خوبیه ولی در مواردی که حجم اطلاعات زیاد باشه نوشتن یک تابع تا حد زیادی مشکلات را حل می کنه.
مسئله اینجاست که وقتی اطلاعات هم زیاد بشن باید ما تبدیلات زیادی انجام بدیم و به گفته استاد ثباتی این بخش تاریخ مسلادی و شمسی با هم فضای ان چنانی نمی گیرده. اگر اینقدر این حجم اطلاعات برای ما اهمیت داشت ما هرگز نباید Index می ساختیم.

M.kavyani
یک شنبه 14 اسفند 1384, 00:31 صبح
اینم گفته آقای ثباتی
http://www.barnamenevis.org/forum/showpost.php?p=173089&postcount=15