【发布时间】:2014-02-19 08:52:30
【问题描述】:
这是我的 c# 代码的一部分
try
{
Database db = DatabaseFactory.CreateDatabase();
string sqlCommand = Constants.GET_UPDATE_STATUS; ;
DbCommand dbCommandWrapper = db.GetStoredProcCommand(sqlCommand);
db.AddParameter(
dbCommandWrapper,
"@p_CurrentUpdatedUTCTime",
DbType.DateTime2,
ParameterDirection.InputOutput,
null,
DataRowVersion.Current,
_myDateTime);
db.AddOutParameter(dbCommandWrapper, "@p_UpdateStatus", DbType.Int16, 10);
db.ExecuteNonQuery(dbCommandWrapper);
status =
Convert.ToInt16(db.GetParameterValue(dbCommandWrapper, "@p_UpdateStatus"));
currentUpdatedUTC =
db.GetParameterValue(dbCommandWrapper, "@p_CurrentUpdatedUTCTime").ToString();
}
catch (Exception exp)
{
errorMessage = exp.Message;
throw new DataAccessException(exp.Message, "UpdateStatusDAL", "GetUpdateStatus", exp);
}
在上面的代码中,currentUpdatedUTC 是我从 SQL 中读取的日期时间。
它工作正常,但从 SQL 读取的时间有 1 秒的差异。
例如,如果我执行它输出的 SQL 过程
2014-01-28T06:49:29
但是当我从 C# 中读取它时,我得到了
2014-01-28T06:49:28
这里是SQL存储过程参数
@p_UpdateStatus SMALLINT OUTPUT,
@p_CurrentUpdatedUTCTime DATETIME OUTPUT
【问题讨论】:
-
是否存储了毫秒?他们可能正在四舍五入。
-
就算是,也应该传入c# part rite?
-
取决于精度。看这篇文章的解释:milesquaretech.com/Blog/post/2011/09/12/…
-
SQL 的语法是这样的,当你遇到一个名字时,名字的形式或它所在的位置会立即告诉你什么类型的对象被命名。因此,真的没有理由使用前缀、后缀或其他任何东西来区分 SQL 中的对象类型。 (名称与视图是一个明显的例外,但您应该尽可能将视图与表一视同仁)
标签: c# sql sql-server datetime