SQL Server datetime 字段在 C# 中未完全显示为 SQL Server



我正在创建一个桌面应用程序,我必须在其中通过提供日期和时间来查询SQL Server中的数据。间隔以秒为单位,每秒我都会再次运行查询,下一个日期。

在这种情况下,我从SQL Server获取数据并将日期列值保存在标签上,处理完该数据后,我再次使用该标签上存储的日期运行该查询。

但是有一个问题,我的 SQL Server 日期时间列显示为

2016-12-01 18:36:32.000

当我在我的 Winform 标签中访问该列时,它显示为

12/1/2016 6:36 PM

正如我所提到的,我还必须考虑秒,就像在 SQL Server 中一样,我的查询工作正常,因为我可以轻松更改分钟,但是当我尝试在标签上加载相同的字段时,它不会像在 SQL Server 中显示的那样显示。

我想要的只是使该列值与SQL Server中显示的值相同。

这是我用来在标签上显示日期时间值的代码。

我从一个简单的SQL查询中选择了该列,例如

SELECT [column name]
FROM [table name]
if (dataset.Tables[0].Rows.Count>0)
{
lblDate.Text = dataset.Tables[0].Rows[0]["CHECKTIME"].ToString();
dgv.DataSource = dataset.Tables[0].DefaultView;
}

错误截图

  • https://i.stack.imgur.com/zRfSJ.jpg
  • http://imgur.com/a/sQtzu

你必须严格分开

  • 日期时间的值

  • 文本表示

您看到的不是实际值。特别是对于日期时间值,这可能会变得非常棘手:如何将其转换为可读文本取决于许多因素:系统的区域性、语言、设置......

当您将日期时间从 SQL-Server 列 (DATETIME) 读取到 C# 变量 (DateTime) 中时,不存在可读的文本。但是当你设置标签的Text属性时,你可能使用了.ToString().此时使用默认设置。

无论您将值设置为标签的文本,都必须传入区域性/格式信息才能以所需的方式获取此信息。

最新更新