为SQLDataAdapter中返回的datetime列指定毫秒精度

为SQLDataAdapter中返回的datetime列指定毫秒精度,sql,vb.net,tsql,datetime,sql-server-2008-r2,Sql,Vb.net,Tsql,Datetime,Sql Server 2008 R2,更新 我在VS2008中尝试了此查询,在服务器资源管理器中尝试了一个新查询 SELECT keyID, code, CAST(evnt_dt AS datetime2(7)) AS 'datetime2' FROM tblDT WHERE (keyID = 474) 新列仍然返回为mm/dd/yyyy hh:mm:ss AM/PM 原始问题: 我试图找到一种方法,为SqlDataAdapter,dateValue.ToS

更新

我在VS2008中尝试了此查询,在服务器资源管理器中尝试了一个新查询

SELECT        
   keyID, code, CAST(evnt_dt AS datetime2(7)) AS 'datetime2'
FROM            
   tblDT
WHERE        
   (keyID = 474)
新列仍然返回为
mm/dd/yyyy hh:mm:ss AM/PM

原始问题:

我试图找到一种方法,为
SqlDataAdapter
dateValue.ToString(“yyyy/mm/dd hh:mm:ss.fff tt”)中返回的datetime列指定毫秒精度。

精度存在于SQL Server 2008 R2中的数据库表中。当
SqlDataAdapter
填充Gridview时,该值将转换为
mm/dd/yyyy hh:mm:ss AM/PM
,以便于显示。我希望它显示如上所述的ms精度

da2.SelectCommand = New SqlCommand("SELECT TOP 1000 [keyID], [evnt_dt], [codes_ID] 
WHERE CAST(evnt_dt AS date) = @evntDate)
并在填充数据表后绑定到Gridview

da2.Fill(ds2)
dt = ds2.Tables(0)

GridView1.DataSource = dt
GridView1.DataBind()
在SQL语句或其他技术中有什么方法可以做到这一点吗


谢谢,

使用如图所示的SQL,您将返回一个日期时间。格式设置在与gridview的绑定中进行;不要忘记,如果在SSMS或SE中运行查询,您将再次看到它被格式化为字符串。在这两种情况下,你都看不到“真实的数据”——很容易认为你看到的是“真实的数据”,但当然,它总是以某种方式进行格式化,以便将其显示在屏幕上。
您可以通过绑定中的格式设置获得所需的结果,或者在查询中可以将datetime值转换为格式为109的字符串。

为什么要基于时间戳标识行?如果两行都有时间戳会发生什么?这只是查询的一个子集,用于建立帮助请求。搜索给定日期,但在将其传递到gridview时显示精度@evntDate实际上来自日历选择。所以我不明白出了什么问题。您将向@evntDate传递什么值?你调试过了吗?传递的实际值是多少?我们看不到这一点,所以很难提供指导。我仍然认为按时间戳标识行是一个糟糕的主意……同意,但这是我面临的要求。使用如图所示的SQL,您将返回一个日期时间。格式设置在与gridview的绑定中进行;不要忘记,如果在SSMS或SE中运行查询,您将再次看到它被格式化为字符串。在这两种情况下,您都看不到“真实数据”。您可以在绑定中的格式设置中修复此问题,或者可以将datetime值转换为格式为109的字符串。