【问题标题】:Maintaining the datetime format from SQL Server to C# and back to SQL Server维护从 SQL Server 到 C# 并返回到 SQL Server 的日期时间格式
【发布时间】:2010-12-05 19:26:51
【问题描述】:

我从 SQL Server 2008 中获得了 lastupdated 日期,其值为“2010-12-01 22:14:49.253”。

然后我在 gridview 中显示它,当用户检查该行以删除时。

在保存之前,我需要根据 SQL Server 中的 lastupdated 日期检查此值。

问题是当我将其转换为datetime 时,它会删除小时、分钟和秒。

所以当我比较它失败了。

有人能告诉我如何维护日期格式吗?

SQL Server 2008 - 数据类型为 datetime

C#.net 使用

DateTime dt = DateTime(dr["LastUpdateDateTime"]);   
object.lastdatetime  = dt;

将对象绑定到数据网格

<asp:BoundField DataField="LastUpdateDateTime"  ItemStyle-CssClass="hidcolumn">

使用 gridview1.Rows 从网格中检索数据

{ 
   gc.LastUpdateDateTime = Convert.ToDateTime(row.Cells[9].Text);
}

并将其传递给数据层

 new SqlParameter("@lastUpdateDate", lastUpdateDate);

调用存储过程

我认为绑定到 Gridview 是时间信息丢失的时候。

【问题讨论】:

  • 你是如何转换日期时间的?它在哪里失去精度?可以发一下代码吗?
  • object.LastUpdateDateTime = (DateTime)(dr["lastupdatedatetime"]);
  • 那是精度丢失的地方吗? LastUpdateDateTime 不包含时间吗?
  • 如果您发布代码或 XML,在文本编辑器中突出显示这些行,然后单击编辑器工具栏上的“代码”按钮 (101 010) 以很好地格式化和语法高亮!

标签: c# datetime


【解决方案1】:

第一个问题:调试的时候,你这里dt的值/数据类型是什么??这是否仍然包含完整的日期,包括时间??

DateTime dt = DateTime(dr["LastUpdateDateTime"]);   
object.lastdatetime  = dt;

第二个问题:您是否在&lt;asp:BoundField&gt; 中指定了DataFormatString?查看MSDN Docs on DataFormatString 看看你可以在那里设置什么——也许你在这里截断了时间部分(不指定任何东西).....

第三个问题:调试通过的时候,这里row.Cells[9].Text看到了什么,这个转换后gc.LastUpdateDateTime的值是多少??这还包含小时、分钟、秒吗??

{ 
   gc.LastUpdateDateTime = Convert.ToDateTime(row.Cells[9].Text);
}

第四个问题/建议:使用SqlParameter时,我总是指定数据类型。 .NET 非常擅长猜测 - 但它只是 - 猜测 - 为什么不告诉它数据是什么??

SqlParameter param = new SqlParameter("@lastUpdateDate", SqlDbType.DataTime);
param.Value = lastUpdateDate;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-04-01
    • 1970-01-01
    • 2012-06-27
    • 2014-08-23
    • 2013-08-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多