ورود

View Full Version : تبدیل رشته به تاریخ



DJ2008
سه شنبه 16 دی 1393, 14:42 عصر
سلام
من تاریخ هام تو جدول بصورت رشته 6 رقمی ذخیره میکنم .
حالا نیاز دارم اون رشته تبدیل به فرمت date بشه کد تبدیل رشته 6 رقمی به تاریخ چگونه است.

DJ2008
سه شنبه 16 دی 1393, 15:01 عصر
اینم یه فانکشن که براش ساختم شاید بدرد شما هم بخوره
function Str2Date(StrDate:string): TDateTime ;
var
Str :string;
begin
Str:=StrDate[1]+StrDate[2]+'/'+StrDate[3]+StrDate[4]+'/'+StrDate[5]+StrDate[6];
Result:= StrToDate(Str);
end;

mohsenan
دوشنبه 11 اسفند 1393, 17:00 عصر
سلام بر اساتید عزیز
من یه مشکل بزرگ دارم که احتمالا راه حلش برای شما کوچیک باشه
یه نرم افزاری یازده سال پیش طراحی شده که یکسری اطلاعات بایگانی میکنه
تقریبا توی تمام تیبل هاش از فیلد zaman استفاده شده که متاسفانه هیچ نظمی برای ثبت دیتا توش رعایت نشده
نوع فیلد هم varchar انتخاب شده که هر نوع کارکتری رو پذیرفته
مشکل من اینجاست که چطور این تاریخ هارو اصلاح کنم و فیلد رو به نوع date تغییر بدم

ممنون از راهنماییتون
129013

یوسف زالی
دوشنبه 11 اسفند 1393, 18:19 عصر
سلام. این بحث به دلفی ارتباطی نداره، باید ببینید نرم افزار چه استانداردی داره رعایت می کنه. اون داده ها احتمالا داده هایی هستند که با نرم افزار آپدیت شده یا انتقال اطلاعات وارد سیستم شدند.
درست کردنش زیاد سخت نیست، ولی باید از تکرارش هم جلوگیری کنید و بفهمید چه برنامه ای داره تاریخ رو اشتباه می زنه، احتمال داره که باکس ورود تاریخ خیلی هویج باشه و هرچیزی رو قبول کنه.
در اینصورت باید روی ستون مورد نظر یک تابع/قید/تریگر بنویسید که هنگام ورود های غیر مجاز خطا بده.

mohsenan
سه شنبه 12 اسفند 1393, 09:48 صبح
سلام. این بحث به دلفی ارتباطی نداره، باید ببینید نرم افزار چه استانداردی داره رعایت می کنه. اون داده ها احتمالا داده هایی هستند که با نرم افزار آپدیت شده یا انتقال اطلاعات وارد سیستم شدند.
درست کردنش زیاد سخت نیست، ولی باید از تکرارش هم جلوگیری کنید و بفهمید چه برنامه ای داره تاریخ رو اشتباه می زنه، احتمال داره که باکس ورود تاریخ خیلی هویج باشه و هرچیزی رو قبول کنه.
در اینصورت باید روی ستون مورد نظر یک تابع/قید/تریگر بنویسید که هنگام ورود های غیر مجاز خطا بده.

دقیقا قسمت آخر فرمایش شماست
نرم افزار هیچ کنترلی روی ورودی نداره و هر چیزی بنویسیم قبول میکنه
یکم بد توضیح دادم
الان مشکل نرم افزار نیست چون اونو درست کردم که نه تکراری دیگه میگیره و نه میتونن عملا چیزی تایپ کنن و فقط باید از یه تقویم استفاده کنن
مشکل اینجاست که بانک قدیمیش 25000 تا رکورد خراب داره
تعداد زیادی از چپ به راست سال و ماه و روز وارد کردن
تعداد زیادی هم از راست به چپ
و یه تعداد حدودا یکی دو هزار تایی هم انواع و اقسام ورود اطلاعات
با حروف - با فاصله- نقطه- خط تیره- فقط سال و ...

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

تشکر

mohsenan
سه شنبه 12 اسفند 1393, 09:50 صبح
آخ من معذرت میخوام
اصلا حواسم به گروه تاپیک نبود که برای دلفی هستش
سرج کردم دیدم مطلب مشابه مشکل منه اینجا نوشتم که دیگه تاپیک جدید باز نکنم

golbafan
سه شنبه 12 اسفند 1393, 09:52 صبح
دقیقا قسمت آخر فرمایش شماست
نرم افزار هیچ کنترلی روی ورودی نداره و هر چیزی بنویسیم قبول میکنه
یکم بد توضیح دادم
الان مشکل نرم افزار نیست چون اونو درست کردم که نه تکراری دیگه میگیره و نه میتونن عملا چیزی تایپ کنن و فقط باید از یه تقویم استفاده کنن
مشکل اینجاست که بانک قدیمیش 25000 تا رکورد خراب داره
تعداد زیادی از چپ به راست سال و ماه و روز وارد کردن
تعداد زیادی هم از راست به چپ
و یه تعداد حدودا یکی دو هزار تایی هم انواع و اقسام ورود اطلاعات
با حروف - با فاصله- نقطه- خط تیره- فقط سال و ...

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

تشکر

به نظرم با یک سری دستورات شرطی باید بیشترین احتمالات ممکن رو چک کنید و برای هر کدوم یک راه درست کنید تا فرمت ها یکسان بشه

mohsenan
سه شنبه 12 اسفند 1393, 10:33 صبح
به نظرم با یک سری دستورات شرطی باید بیشترین احتمالات ممکن رو چک کنید و برای هر کدوم یک راه درست کنید تا فرمت ها یکسان بشه


پیشنهاد یا مثالی دارین براش؟

golbafan
سه شنبه 12 اسفند 1393, 10:42 صبح
مثلا به این صورت ها وارد شده:
13930115
930115
1393115
93115 => این معلوم نمیشه
93/01/15
15/1/93

برای هرکدوم میتونید یک روش تبدیل درست کنید

برای راهنمایی بهتر میتونید اینجا نمونه هایی که در دیتابیستون هست رو بزارید من ببینم

یوسف زالی
سه شنبه 12 اسفند 1393, 10:45 صبح
تقریبا اکثر اشتباهات معلوم شدنی هستند. مثلا طول، دو رقم اول، داشتن کاراکتر غیر عددی، و ...


1- رکورد ها رو دسته بندی می کنید
2- برای هر دسته کد آپدیت خودش رو می نویسید
3- رکورد هایی رو که در هیچ دسته ای نمی گنجند، دستی آپدیت می کنید
4- دنبال رکورد های از قلم افتاده می گردید

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

mohsenan
سه شنبه 12 اسفند 1393, 10:53 صبح
1- رکورد ها رو دسته بندی می کنید
2- برای هر دسته کد آپدیت خودش رو می نویسید
3- رکورد هایی رو که در هیچ دسته ای نمی گنجند، دستی آپدیت می کنید
4- دنبال رکورد های از قلم افتاده می گردید

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

ممنون از شما
امیدوار بودم راه کاری کلی تر وجود داشته باشه
دیروز به این روشی که گفتین فکر کرده بودم و اصلا حوصله این کارو نداشتم که پست زدم

ولی ظاهرا چاره دیگه ای ندارم

بازم ممنون از راهنمایی شما