PDA

View Full Version : سوال: درج تاریخ و ساعت در sql



esrafil_hashemi
شنبه 24 مهر 1389, 12:34 عصر
با سلام
من یه فرمی تو vb.net طراجی کردم که تاریخ و ساعت سیستم رو میگیره
حالا میخوام کاربر با زدن دکمه ذخیره این تاریخ در دیتا بیس من ذخیره شود

درضم من در دیتابیسم دوتا فیلد جداگانه که یکی برای تاریخ که از نوع char(10 ودیگری برای زمان از نوع char(5 انتخاب کردم ولی موقع ذخیره در دیتا بیس برام خطا میده لطفا راهنمایی کنید؟

حمیدرضاصادقیان
شنبه 24 مهر 1389, 12:44 عصر
سلام.چه خطایی به شما میده؟ متن خطا رو اینجا قرار بدید.
در ضمن میتونید به جای دو فیلد از فیلد Datetime خود sql server استفاده کنید.

saeed_r67
شنبه 24 مهر 1389, 16:35 عصر
سلام .فیلدت رو از نوع nvarchar کن مشکل براحتی حل میشه

حمیدرضاصادقیان
شنبه 24 مهر 1389, 16:41 عصر
سلام.به راحتی حل میشه.ولی برای کار با تاریخ و ساعت و استفاده از توابع اون مقداری پیچیدگی پیدا میکنه همچنین سرعت جستجو روی datetime نیز سریعتر از nvarchar هست و حجم کمتری نیز اشغال خواهد کرد.

saeed_r67
شنبه 24 مهر 1389, 16:51 عصر
سلام.به راحتی حل میشه.ولی برای کار با تاریخ و ساعت و استفاده از توابع اون مقداری پیچیدگی پیدا میکنه همچنین سرعت جستجو روی datetime نیز سریعتر از nvarchar هست و حجم کمتری نیز اشغال خواهد کرد.



کاملا صحیح می فرمایید ولی خوب برای وارد کردن تاریخ 89/02/30 باید چه چوری عمل کرد . چون قبول نمی کنه به علت میلادی بودن29/02/89

حمیدرضاصادقیان
یک شنبه 25 مهر 1389, 07:26 صبح
سلام.خوب بهترین گزینه استفاده از Char 8 هست.زیرا nvarchar برای مواقعی هست که اولا شما میخواهید unicode ذخیره کنید که در تاریخ یونیکدی وجود نداره.دوما به خاطر متغیر بودن طول آن هست. طول تاریخ همیشه ثابته و 8 کارکتره(6 کارکتر برای اعداد 2 کارکتر برای /) ولی از nvarchar مثلا برای نام یا آدرس استفاده میکنند.
موفق باشید

saeed_r67
یک شنبه 25 مهر 1389, 13:05 عصر
خوب درست .
اگه nvarchar رو با lengeh=8 بگیریم ، دیگه فضای مناسب خودشو رو میگیره .نظرتون چیه؟

MOJTABAATEFEH
یک شنبه 25 مهر 1389, 19:07 عصر
خوب درست .
اگه nvarchar رو با lengeh=8 بگیریم ، دیگه فضای مناسب خودشو رو میگیره .نظرتون چیه؟

دوست در مواقعی که نیاز به ثبت کاراکترهای یونیکد ندارید از nvarchar استفاده نکن و در اینجا هم حداقل از varchar استفاده کن به دلیل اینکه nvarchar دو برابر varchar فصا اشغال میکنه


موفق باشید

حمیدرضاصادقیان
دوشنبه 26 مهر 1389, 08:50 صبح
سلام.اخه چه اصراریه از این نوع متغیر استفاده کنید.درسته میشه ازاین متغیر هم استفاده کرد.ولی این متغیر برای زمانی هست که طول آن فیلد مشخص نیست.وقتی اینجا طول فیلد شما ثابته باید از نوع های ثابت استفاده کنید.
درضمن نوع قرارگیری این فیلدها هم در page ها فرق میکنه و روی سرعت گزارش شما خیلی تاثیر داره. فیلدهای با طول متغیر روی 3-4 بایت آخر page ها قرار میگیرند ولی فیلدهای با طول ثابت در ابتدای pageها.همچنین بعضی وقتها تمامی فیلدهای ثابت ابتدا در page های ابتدایی قرار میگیرند که موقع گرفتن گزارش ابتدا اونها خوانده میشه بعد page های دیگر.