在 DataGridView 中显示之前将时间戳(Datetime.ticks)从数据库转换为 Datetime 值

Posted

技术标签:

【中文标题】在 DataGridView 中显示之前将时间戳(Datetime.ticks)从数据库转换为 Datetime 值【英文标题】:Convert timestamp(Datetime.ticks) from database to Datetime value before displaying it in DataGridView 【发布时间】:2012-08-11 11:18:45 【问题描述】:

我在我的 winform 应用程序中使用 SQL Server 精简版作为后端。

我的一张表中有一个 时间戳 列。我已按如下方式存储时间戳

DateTime dt = System.DateTime.Now;
long timestamp = dt.Ticks;

它将表示当前日期和时间的长值存储到数据库中。

我想通过设置 DataSource 属性在 DataGridView 控件中显示表格的数据。

当我使用 SQL 查询“select * from my-table”检索表数据并附加到 DataSource 时,它​​只是将时间戳显示为长值。

我的问题是: 在 DataGridView 中显示之前,如何将时间戳转换回 dd-mm-yyyy 格式的 DateTime 值?

【问题讨论】:

你能举个例子,你如何将数据绑定到datagridview?你用什么作为数据源?只是数据表? 我执行了 SqlCeCommand 并将 SqlCeResultSet 附加到 DataGridView 的 DataSource 属性。 【参考方案1】:

如果你使用数据表,你可以这样做:

resultDataTable.Columns.Add(new DataColumn("DateTime", typeof(DateTime)));
foreach (DataRow r in dt.Rows)

    r["DateTime"] = new DateTime(Convert.ToInt32(r["Timestamp"]);

dt.Columns.Remove("Timestamp");

选中此项以将 sqlceresultset.resultview 转换为数据表:Convert SQLCEResultSet resultview to datatable

【讨论】:

【参考方案2】:

怎么样

Datetime dt = new DateTime(longvaluefromdatabase);

将 DateTime 结构的新实例初始化为指定的刻度数

阅读this

【讨论】:

我同意,这会将长值转换为日期时间值。但是我将如何在 DatagridView 中反映这种变化?

以上是关于在 DataGridView 中显示之前将时间戳(Datetime.ticks)从数据库转换为 Datetime 值的主要内容,如果未能解决你的问题,请参考以下文章

datagridview行删除时,之前都能删除,但就是最后一行删除时,数据库删除了,但datagridview却还显示它。

在插入之前检查 DataGridview 中的值是不是与数据库表/模式兼容

在c#中保存datagridview中的数据

如何将多个表中的数据显示到dataGridView

在 DataGridView 中显示数据

C# WIN窗体 datagridview中将显示成绩小于60的行显示为红色,之前问了,但是找不到RowDataBound事件