PDA

View Full Version : چگونگی تفاضل تاریخ در اس کیو ال



negin1369
یک شنبه 22 خرداد 1390, 00:25 صبح
با سلام به دوستان عزیز
لطفا اگه این تاپیک رو دیدید فوری جواب بدید
سوال من در مورد چگونگی تفاضل 2 تاریخ است بر اساس اون چیزی که من میدونم تارخ ها باید intباشند ولی یه مشکل intفقط یه عدد قبول می کنه در صورتی که تاریخ شامل چیز های دیگه هم هست مثلا
9/9/89 اگه بخوای از 89/10/8 کم کنی باید چی کار کنی تا این درست جواب بده:گیج:

محمد سلیم آبادی
چهارشنبه 25 خرداد 1390, 03:50 صبح
بر اساس اون چیزی که من میدونم تارخ ها باید intباشند
چون که Data Type مربوط به تاریخ در این نرم افزار میلادی هست اینطور فکر می کنید یا دلیل دیگری وجود داره؟
من در کل مخالف اینم که تاریخ به صورت رشته یا عدد در سیستم ذخیره بشه همانطوری که در یکی دیگر از پست های همین تالار در چند دقیقه پیش مطرح کردم شما مشکلات جدی با کنترل داده های وارد شده خواهید داشت. به این معنا که هر داده ی اشتباهی میشود وارد کرد. و برای رفع این مشکل ناچارید توابع و قیود متعددی ایجاد کنید.

در جایی مشغول به فعالیت بودم که نوع داده ای که برای تاریخ در نظر گرفته بودند Integer بود. راه حلی که برای اضافه کردن یک تاریخ به یک تاریخ دیگر استفاده کردم این بود که ابتدا دو تاریخ را به روز تبدیل کرده سپس با همدیگر جمع نموده و در آخر تبدیل به سال، ماه و روز میکردم. شما هم در این مورد می توانید تابع مورد نظر خودتان را توسط UDF پیاده سازی کنید.

علی رسولیان
پنج شنبه 26 خرداد 1390, 01:41 صبح
سلام
اگر که پیاده سازی انجام نگرفته، بهتره که بصورت استاندارد و میلادی اطلاعات رو ذخیره کنید و خیلی راحت و عالی با توابع تاریخ sql server کار کنید و دست آخر چنانچه میخواهید تاریخ رو بصورت شمسی نمایش بدید با یک تبدیل راحت از میلادی به شمسی کارتون انجام میشه و از پیچیدگیهای بیهوده هم پرهیز میشه.

موفق باشید

vahdani_d
دوشنبه 08 اسفند 1390, 22:07 عصر
سلام
اگر که پیاده سازی انجام نگرفته، بهتره که بصورت استاندارد و میلادی اطلاعات رو ذخیره کنید و خیلی راحت و عالی با توابع تاریخ sql server کار کنید و دست آخر چنانچه میخواهید تاریخ رو بصورت شمسی نمایش بدید با یک تبدیل راحت از میلادی به شمسی کارتون انجام میشه و از پیچیدگیهای بیهوده هم پرهیز میشه.

موفق باشید
خوب بعد از این کار به چه شکل باید اختلاف دو تاریخ رو حساب کرد
فرض کنید دوتا تاریخ به میلادی الان توی دیتا بیس ذخیره شده 2003-08-2 و 2004-02-01
اتلاف رو چطور بدست بیاریم که بعد به شمسی برای نمایش تبدیل کنیم ؟

zarifcomputer
پنج شنبه 11 اسفند 1390, 19:00 عصر
خوب بعد از این کار به چه شکل باید اختلاف دو تاریخ رو حساب کرد
فرض کنید دوتا تاریخ به میلادی الان توی دیتا بیس ذخیره شده 2003-08-2 و 2004-02-01
اتلاف رو چطور بدست بیاریم که بعد به شمسی برای نمایش تبدیل کنیم ؟

تابع زیر تفاضل دو مقدار از نوع تاریخ را محاسبه میکنند:
SELECT DATEDIFF(YEAR, '2005-12-31' , '2006-01-01');
SELECT DATEDIFF(MONTH, '2005-12-31' , '2006-01-01');
SELECT DATEDIFF(DAY, '2005-12-31' , '2006-01-01');
SELECT DATEDIFF(HOUR, '2005-12-31' , '2006-01-01');
SELECT DATEDIFF(MINUTE, '2005-12-31' , '2006-01-01');
SELECT DATEDIFF(SECOND, '2005-12-31' , '2006-01-01');
SELECT DATEDIFF(MILLISECOND, '2005-12-31' , '2006-01-01');
')
-----------------------------------------------------------------------------------------------------
1
(1 row(s) affected)
-----------
1
(1 row(s) affected)
-----------
1
(1 row(s) affected)
-----------
24
(1 row(s) affected)
-----------
1440
(1 row(s) affected)
-----------
86400
(1 row(s) affected)
-----------
86400000
(1 row(s) affected)