PDA

View Full Version : مشکل در گرفتن تاریخ و ساعت از سرور



nafisehk
یک شنبه 28 مهر 1392, 12:00 عصر
سلام

من این کد و نوشتم

DateTime myDateTime;

Query = "select GETDATE()";

MyDataTable = DataBase.Execute.ExecuteReadQuery(Query);

string s = MyDataTable.Rows[0][0].ToString();

myDateTime = DateTime.Parse(s.Substring(0,10));

return myDateTime;


ارورش:Conversion failed when converting datetime from character string


چرا فرمت تاریخی که تو sql برمیگردونه با فرمتی که کد برمیگردونه متفاوته:

sql:2013-10-20 10:19:14.150
;کد:2013-10-20 10:19:14.1ق ظ

قبل از اینکه به datetime تبدیل بشه هم همینه فرمتش!!!!!!

ممنون میشم راهنمایم کنید

hamid_hr
یک شنبه 28 مهر 1392, 12:07 عصر
سلام
من با اين كد تست كردم مشكلي نداره

SqlConnection cnn = new SqlConnection("Data Source=.....................");
SqlCommand cmd;
SqlDataReader sdr = null;
cmd = new SqlCommand("select getdate()", cnn);
cnn.Open();
string st = "";
sdr = cmd.ExecuteReader(System.Data.CommandBehavior.Clos eConnection);
if (sdr.Read())
st = sdr[0].ToString();
cnn.Close();
DateTime dt = DateTime.Parse(st);

nafisehk
یک شنبه 28 مهر 1392, 12:19 عصر
sdr = cmd.ExecuteReader(System.Data.CommandBehavior.Clos eConnection);


من از executenonquery() استفاده کردم:|

nafisehk
یک شنبه 28 مهر 1392, 12:28 عصر
سلام
من با اين كد تست كردم مشكلي نداره

SqlConnection cnn = new SqlConnection("Data Source=.....................");
SqlCommand cmd;
SqlDataReader sdr = null;
cmd = new SqlCommand("select getdate()", cnn);
cnn.Open();
string st = "";
sdr = cmd.ExecuteReader(System.Data.CommandBehavior.Clos eConnection);
if (sdr.Read())
st = sdr[0].ToString();
cnn.Close();
DateTime dt = DateTime.Parse(st);


کد شما هم ق ظ ب ظ داره:| اگه "ق ظ" "ب ظ" داشته باشه موقع ذخیره تاریخ تو db این ارورو میده

hamid_hr
یک شنبه 28 مهر 1392, 12:51 عصر
اصلا بيا مستقيم از ديتابيس بريز داخل يك متغيير از نوع datetime

DateTime Dt1;
if (sdr.Read())
Dt1 = (DateTime)sdr[0];

nafisehk
یک شنبه 28 مهر 1392, 12:56 عصر
اصلا بيا مستقيم از ديتابيس بريز داخل يك متغيير از نوع datetime

DateTime Dt1;
if (sdr.Read())
Dt1 = (DateTime)sdr[0];


فرقی نداره امتحان کرددم:|

nafisehk
یک شنبه 28 مهر 1392, 13:13 عصر
من همشو امتحان كردم هيچ مشكلي نداره


میشه فرمت تاریخی که برمیگردونه رو اینجا بزارید؟

saied_max
یک شنبه 28 مهر 1392, 13:19 عصر
کدت درسته اما اینجاش فکر کنم اشتباه کردی باید مقدار سلول را برگردونی


string s = MyDataTable.Rows[0][0].value.ToString();

nafisehk
یک شنبه 28 مهر 1392, 13:21 عصر
کدت درسته اما اینجاش فکر کنم اشتباه کردی باید مقدار سلول را برگردونی


string s = MyDataTable.Rows[0][0].value.ToString();



خوب Row[0][0[ سلوله دیگه.

nafisehk
یک شنبه 28 مهر 1392, 13:22 عصر
من همشو امتحان كردم هيچ مشكلي نداره

دستور تاریخ و برمیگردونه اما نه با فرمتی که من میخوام چون با این فرمت که برمیگردونه نمیتونم ذخیرش کنم

hamid_hr
یک شنبه 28 مهر 1392, 13:43 عصر
خب نميشه بريزي تو متغير از نوع datetime بعد تبديل كني به هر فرمتي كه ميخواي؟

nafisehk
یک شنبه 28 مهر 1392, 13:49 عصر
خب نميشه بريزي تو متغير از نوع datetime بعد تبديل كني به هر فرمتي كه ميخواي؟

فیلد دیتابیس هم datetime هستش.

چرا فرمت تاریخی که تو sql برمیگردونه با فرمتی که کد برمیگردونه متفاوته:

sql:2013-10-20 10:19:14.150
;کد:2013-10-20 10:19:14.1ق ظ



قبل از اینکه به datetime تبدیل بشه هم همینه فرمتش!!!!!!


من با خوندنش مشکلی ندارم موقع ذخیره این ارورو میده که فکر میکنم به خاطر فرمته

Conversion failed when converting datetime from character string

hamid_hr
یک شنبه 28 مهر 1392, 14:03 عصر
اي واي
خب فيلدي كه ميخواي ذخيره كني از چه نوعي هستش؟

nafisehk
یک شنبه 28 مهر 1392, 14:06 عصر
اي واي
خب فيلدي كه ميخواي ذخيره كني از چه نوعي هستش؟

برا چی ای وای؟

فیلد دیتابیس هم datetime هستش.

hamid_hr
یک شنبه 28 مهر 1392, 14:17 عصر
connection.Open();
SqlCommand command = new SqlCommand("insert into table values(@time)", connection);
command.Parameters.AddWithValue("@time", DateTime.Now);
command.ExecuteNonQuery();
connection.Close();

بخاطر اينكه از اول فك ميكردم نميتونين اطلاعاتو بگيرين اي واي

nafisehk
یک شنبه 28 مهر 1392, 14:21 عصر
connection.Open();
SqlCommand command = new SqlCommand("insert into table values(@time)", connection);
command.Parameters.AddWithValue("@time", DateTime.Now);
command.ExecuteNonQuery();
connection.Close();

بخاطر اينكه از اول فك ميكردم نميتونين اطلاعاتو بگيرين اي واي


خدا رو شکر که که بالاخره فهمیدین:)


این که تاریخ سیستم و میگیره :دی

command.Parameters.AddWithValue("@time", DateTime.Now);

hamid_hr
یک شنبه 28 مهر 1392, 14:24 عصر
خب متغييري كه از نوع datetime هست رو بزار :لبخند:

veniz2008
یک شنبه 28 مهر 1392, 14:33 عصر
سلام.
کار رو برای خودتون سخت کردید.
شما که datetime گرفتی، به جای اینکه خودتون از سرور بخونید، بیاریدش داخل محیط ویژوال و دوباره بفرستش واسه sql ، خوب خیلی راحت همون سمت sql بذار خودش ثبتش کنه.
واسه این کار در قسمت طراحی جدولت، اون فیلد datetime رو انتخاب کن و مقدار خصوصیت Default Value or Binding رو بر روی ()GetDate بذار و جدول رو ذخیره کن. از این به بعد دیگه نیازی نیست شما مقدار بفرستی، خودش اتوماتیک هر رکوردی رو ثبت کنی، تاریخ و ساعت اون لحظه رو ثبت میکنه.
112061

nafisehk
یک شنبه 28 مهر 1392, 14:34 عصر
خب متغييري كه از نوع datetime هست رو بزار :لبخند:

هعیییی:|

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

nafisehk
شنبه 11 آبان 1392, 17:11 عصر
سلام.
کار رو برای خودتون سخت کردید.
شما که datetime گرفتی، به جای اینکه خودتون از سرور بخونید، بیاریدش داخل محیط ویژوال و دوباره بفرستش واسه sql ، خوب خیلی راحت همون سمت sql بذار خودش ثبتش کنه.
واسه این کار در قسمت طراحی جدولت، اون فیلد datetime رو انتخاب کن و مقدار خصوصیت Default Value or Binding رو بر روی ()GetDate بذار و جدول رو ذخیره کن. از این به بعد دیگه نیازی نیست شما مقدار بفرستی، خودش اتوماتیک هر رکوردی رو ثبت کنی، تاریخ و ساعت اون لحظه رو ثبت میکنه.
112061

ممنون از راهنماییتون
اگه تاریخ تو شرایط خاصی ثبت بشه چی؟
مثلا موقع درج یک رکور فیلد RecordDeletedTime که ثبت نمیشه موقع حذفش تاریخ حذف باید درج شه...

علی متقی پور
شنبه 11 آبان 1392, 21:28 عصر
با سلام

سوم دسامبر سال 2013

مایکروسافت EF6 را هم منتشر کرده. ما همچنان در حال سر و کله زدن مستقیم با Ado.net هستیم :(

nafisehk
شنبه 11 آبان 1392, 22:10 عصر
با سلام

سوم دسامبر سال 2013

مایکروسافت EF6 را هم منتشر کرده. ما همچنان در حال سر و کله زدن مستقیم با Ado.net هستیم :(


سلام
حق با شماست
این پروزه که تموم شه حتما ef یاد میگیرم اما به هر حال الان نیاز به راه حل دارم

veniz2008
یک شنبه 12 آبان 1392, 00:36 صبح
ممنون از راهنماییتون
اگه تاریخ تو شرایط خاصی ثبت بشه چی؟
مثلا موقع درج یک رکور فیلد RecordDeletedTime که ثبت نمیشه موقع حذفش تاریخ حذف باید درج شه...
این دو فیلد (زمان درج رکورد و زمان حذف یک رکورد) رو به جه صورت درون دیتابیس تعریف کردید؟ منظورم نوعشون نیست. اینکه در چه جداولی این ها رو بکار بردید؟ ساختار جداولتون رو یه خورده شرح بدید.

nafisehk
یک شنبه 12 آبان 1392, 10:10 صبح
امروز یکشنبه 1392/08/12 شمسی مصادف با 2013/03/11 میلادی ساعت 18 دقیقه بامداد به وقت تهران، و ما هنوز یاد نگرفتیم که اسپم ندیم.

این دو فیلد (زمان درج رکورد و زمان حذف یک رکورد) رو به جه صورت درون دیتابیس تعریف کردید؟ منظورم نوعشون نیست. اینکه در چه جداولی این ها رو بکار بردید؟ ساختار جداولتون رو یه خورده شرح بدید.


جدول User ها ->که اطلاعات یوزر+ فیلد(record deleted) که با حذف رکورد مقدارش یک میشه و یک فیلد RecordDeletedTime از نوع datatime که در صورت حذف رکورد تاریخ حذف رو نگه میداره

veniz2008
یک شنبه 12 آبان 1392, 11:22 صبح
جدول User ها ->که اطلاعات یوزر+ فیلد(record deleted) که با حذف رکورد مقدارش یک میشه و یک فیلد RecordDeletedTime از نوع datatime که در صورت حذف رکورد تاریخ حذف رو نگه میداره
اینطور که من از حرف های شما متوجه شدم شما دستور Delete ندارید و در واقع زمانیکه کاربر روی دکمه حذف یک کاربر کلیک میکنه، شما مقدار فیلد record delete رو به 1 تبدیل و زمان (درخواست) حذف رکورد رو ثبت می کنید. به عبارت دیگه شما روی همون رکوردی که ثبت کردی دستور Update رو اعمال می کنید.
با این توضیحات دیگه نباید از پیش و بصورت ثابت برای اون فیلد در زمان طراحی تابع ()getdate رو بصورت پیش فرض وارد کنید. داخل دستور update که می نویسید مقدار اون فیلد رو برابر با 1 و زمان درخواست حذف رکورد رو هم ثبت کنید. یه چیزی شبیه به این :

Update TblStudent set RecordDeleted = 1, RecordDeletedTime = GETDATE() where StdID = 1

danialafshari
دوشنبه 13 آبان 1392, 01:39 صبح
تا اطلاع ثانوی بسته است
کسی حق بازخواست دیگری رو نداره و در صورت مشاهده پست مغایر با قوانین سایت از دکمه "آگاه کردن مدیریت از مخالفت" استفاده کنید