C# 如何从SQLServer数据库中的DateTime列获取到DataGridView列的时间?
这是我的代码的一部分,我从数据库中的C# 如何从SQLServer数据库中的DateTime列获取到DataGridView列的时间?,c#,sql-server,winforms,datagridview,C#,Sql Server,Winforms,Datagridview,这是我的代码的一部分,我从数据库中的IncomingLog表中检索所有列,并将其保存到Winform应用程序中的DGV。我已经修复了日期列,但是我无法修复我的DataGridView的时间列(这个:“HH:mm:ss tt”不起作用,仍然显示时间(上午7:26,这是正确的)和日期(1900年1月1日,这是不正确的)) 有人能帮我吗?谢谢 DataTable dt; _db.conn(); _db.cmd.CommandText = "SELECT * FROM IncomingLog";
IncomingLog
表中检索所有列,并将其保存到Winform应用程序中的DGV。我已经修复了日期
列,但是我无法修复我的DataGridView的时间
列(这个:“HH:mm:ss tt”不起作用,仍然显示时间(上午7:26,这是正确的)和日期(1900年1月1日,这是不正确的))
有人能帮我吗?谢谢
DataTable dt;
_db.conn();
_db.cmd.CommandText = "SELECT * FROM IncomingLog";
dt = _db.executeDT();
incomLogTable.DataSource = dt;
incomLogTable.Columns[2].DefaultCellStyle.Format = "MM/dd/yyyy";
incomLogTable.Columns[4].DefaultCellStyle.Format = "HH:mm:ss tt";
由于两列都是datetime,因此生成时间时,时间似乎默认为日期0(01/01/1990)。作为旁注,如果日期和时间都存储为时间戳,则它们最好是一列 第一个选项是将datetime转换为字符串,并从字符串中提取所需的值。您可以在SQL Server中读取格式化时间戳。如果你能从中得到你想要的格式,那么这是2中比较容易的。下面的将以字符串形式返回7:26AM
declare @date datetime = '1990-01-01 07:26:00'
select substring(convert(nvarchar(max),@date,0),12,20)
另一个选项是将datetime分解为DatePart,然后以您想要的任何格式将它们组合在一起。以下消息将于上午7:26返回
declare @date datetime = '1990-01-01 07:26:00'
select
cast(datepart(hour,@date) as varchar(2)) --Assign hour
+ ':' --Add asterisk
+ cast(datepart(minute,@date) as varchar(2)) --Assign minute
+ ' ' --Add space before AM/PM
+ case when datepart(hour,@date) > 12 then 'PM' else 'AM' end --Determine AM vs PM and add
怎么了?小时是否显示不正确?如果是,请尝试hh:mm:ss tt。另外,是否有意在代码周围加上单引号?它消除了SA对块所做的任何格式化。小时显示不正确。它仍然显示mm/dd/yyyy hh:mm AM/PM。我的一行时间是:1900年1月1日上午7:25。时间tho是正确的。当我问这个问题时,我的代码中包含了单引号。哈哈,我的代码里没有。更新:我尝试了hh:mm:ss tt,仍然是相同的。hh是24小时格式。使用hh和tt。“HH:mm:ss”或“HH:mm:ss tt”您能否为正在查询的SQL表列和一些示例行提供数据类型?您可能希望在SQL查询中而不是在c#中进行格式化。