【问题标题】:assign millisecond precision to a datetime column returned in a SQLDataAdapter将毫秒精度分配给 SQLDataAdapter 中返回的日期时间列
【发布时间】: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

原问题:

我正在尝试找到一种方法将毫秒精度分配给SqlDataAdapterdateValue.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


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2017-08-31
    • 2013-02-23
    • 1970-01-01
    • 1970-01-01
    • 2013-02-03
    • 2020-01-30
    • 2023-01-19
    • 2015-09-23
    • 1970-01-01
    相关资源
    最近更新 更多