【发布时间】:2013-11-04 23:47:53
【问题描述】:
更新
我已经在 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") 中返回的日期时间列
精度存在于 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 语句中做到这一点,或者其他技术?
谢谢,
【问题讨论】:
-
你为什么要根据时间戳来识别一行?如果两行有时间戳会怎样?
-
这只是查询的一个子集,用于建立帮助请求。在给定日期搜索,但是当它传递给 gridview 时显示的精度。 @evntDate 实际上来自日历选择。
-
所以我不明白出了什么问题。你传递给@evntDate 什么值?你调试过吗?传递的实际值是多少?我们看不到这一点,因此很难提供指导。我仍然建议通过时间戳来识别行是一个糟糕的主意......
-
同意,但这是我面临的要求。
-
使用如图所示的 SQL,您将返回一个日期时间。格式化发生在与 gridview 的绑定中;不要忘记,如果您在 SSMS 或 SE 中运行查询,您会再次看到它被格式化为字符串。在任何一种情况下,您都看不到“真实数据”。您可以在绑定中的格式设置中解决此问题,或者您可以将日期时间值转换为格式为 109 的字符串。
标签: sql vb.net tsql datetime sql-server-2008-r2