当将值传递给SQLSERVER时,它仅记录日期而不是日期和时间? [英] When passing value to the SQLSERVER it only record date instead of date and Time?

查看:70
本文介绍了当将值传递给SQLSERVER时,它仅记录日期而不是日期和时间?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我只想将日期和时间传递给数据库列.但它仅提供Datetime变量的日期部分.任何人都没有任何建议.

 字符串 procedureName;
CommandType cmdType;
列表< sqlparameter>参数=  List< sqlparameter>();

// 设置过程属性
procedureName = " ;
cmdType = CommandType.StoredProcedure;

parameters.Add( SqlParameter(" 、SqlDbType.VarChar、 10 ));
parameters.Add( SqlParameter(" 、SqlDbType.VarChar、 10 ));
parameters.Add( SqlParameter(" 、SqlDbType.VarChar、 10 ));
parameters.Add( SqlParameter(" 、SqlDbType.VarChar、 10 ));

字符串 date = DateTime.Now.ToString();

// 通过存储过程插入数据
参数[ 0 ].Value = CountryCode.Replace("  ''");
参数[ 1 ].Value = ExchangeRate.Replace("  ''");
参数[ 2 ].Value = DateTime.Now;
参数[ 3 ].Value = U_id;


// 传递给通用过程
布尔值 status = SQLTrans.executeProcedure(procedureName,cmdType,parameters);
// 这只会将"DATE"零件值传递给数据库,而不会将时间"值传递给数据库.  


在数据库中,updatedOn声明为"datetime".我可以确保该参数将获取日期和时间值.但是当涉及到DB时,它仅存储datepart.我还尝试通过给该参数值提供一个手动字符串("4/20/2012 2:51:52 PM").但是它也没有保存在数据库中.但是我可以手动将记录插入到数据库中. class ="h2_lin">解决方案

原因可能是updatedOn 参数定义为

 parameters.Add( SqlParameter(" ,SqlDbType.VarChar, 10 ))); 


长度是10.但是带时间的日期加起来超过10个字符
注意:这是有可能的,我尚未验证.

其次,将SqlDbType 视为VarChar ,而此处给出的DateTime 可能更合适
http://msdn.microsoft.com/en-us/library/system.data. sqldbtype.aspx [ ^ ].

此外,如此处所述,SqlParameterCollection.AddWithValue方法比添加参数然后分配值更好,
http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlparametercollection.addwithvalue.aspx [ ^ ]


将@updatedOn参数的大小从10增加到20.


i just want to pass date and time to a database column. but it only delivers date part of the Datetime variable.Does anyone have any suggestions.

String procedureName;
CommandType cmdType;
List<sqlparameter> parameters = new List<sqlparameter>();

//setting procedure properties
procedureName = "EX_Updater";
cmdType = CommandType.StoredProcedure;

parameters.Add(new SqlParameter("@curCode", SqlDbType.VarChar, 10));
parameters.Add(new SqlParameter("@curExRate", SqlDbType.VarChar, 10));
parameters.Add(new SqlParameter("@updatedOn", SqlDbType.VarChar, 10));
parameters.Add(new SqlParameter("@updatedBy", SqlDbType.VarChar, 10));

string date = DateTime.Now.ToString();

//Inserting data through stored procedure
parameters[0].Value = CountryCode.Replace("'", "''");
parameters[1].Value = ExchangeRate.Replace("'", "''");
parameters[2].Value = DateTime.Now;
parameters[3].Value = U_id;


//pass to common procedure
Boolean status = SQLTrans.executeProcedure(procedureName, cmdType, parameters);
//This will only pass "DATE" part value to the database and not passing Time value to the database. 


In database updatedOn is declared as "datetime ".i can assure that parameter will be getting date and time values.but whenit comes to DB it only stores datepart. i also tried by giving a manual string("4/20/2012 2:51:52 PM")to that parameter value.but it also did not saved in the database.But i can manually insert records to the DB.

解决方案

The reason could be that the updatedOn parameter is defined as

parameters.Add(new SqlParameter("@updatedOn", SqlDbType.VarChar, 10));


where the length is 10. But the Date with Time together is more than 10 chars long
Note: This could be a possibility, I have not verified.

Secondly, the SqlDbType is taken as VarChar whereas DateTime may be more appropriate as given here
http://msdn.microsoft.com/en-us/library/system.data.sqldbtype.aspx[^].

Further, the SqlParameterCollection.AddWithValue Method is better instead of adding a parameter and then assigning a value, as explained here
http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlparametercollection.addwithvalue.aspx[^]


increase the size of @updatedOn parameter from 10 to 20.


这篇关于当将值传递给SQLSERVER时,它仅记录日期而不是日期和时间?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆