vb.net - 在图表中显示时间戳而不是日期 - SQL
问题描述
我正在为客户处理数据处理页面。
我制作了一个图表,显示来自我的 SQL 服务器的数据。
在我的 x 轴上,我有一个日期,但整个列还包含一个时间戳,例如“08/01/2019 14:34”,但不可见。
如下图所示,如果可能,如何格式化 x 轴值以仅显示时间或 dbo 的整个值?
我是否必须在屏幕上格式化图表的大小,如果是,我该怎么做?我尝试在图表设置中寻找一个选项。
这是代码片段:
Private Sub dgvSiteChart() 'Load data from dbo
DateandTimeString24H = "'" & Date.Now.Year & "-" & Date.Now.Month & "-" & Date.Now.Day & " 00:00:00.000'" & " And " & "'" & Date.Now.Year & "-" & Date.Now.Month & "-" & Date.Now.Day & " 23:59:59.000'"
SQLCon = New SqlConnection
SQLCon.ConnectionString = "Data Source=" & System.Net.Dns.GetHostName() & "\KVMSQL;Initial Catalog=MHA;User ID=#####;Password =######"
Dim READER As SqlDataReader
Try
SQLCon.Open()
Dim Query As String
Query = "SELECT DateAndTime,Tagindex,Val FROM dbo.FT WHERE tagindex=0 and DateAndTime between " & DateandTimeString24H & "ORDER BY DateAndTime"
SQLCmd = New SqlCommand(Query, SQLCon)
READER = SQLCmd.ExecuteReader
While READER.Read
chrtReportMchn.Series("LOG").Points.AddXY(READER("DateAndTime"), READER("Val"))
End While
SQLCon.Close()
Catch ex As Exception
MsgBox(ex.Message)
Finally
SQLCon.Dispose()
End Try
End Sub
日期和时间格式为dd/MM/yyyy HH:mm(24H)
.
更新:10/1-19
在@Markus 和他的评论的帮助下,我已经弄清楚了。代码是用FORMAT(CAST(DateAndTime as time), 'hh\:mm\ ')
放在前面编辑的DateAndTime
。
Try
SQLCon.Open()
Dim Query As String
Query = "SELECT FORMAT(CAST(DateAndTime as time), 'hh\:mm\ ') DateAndTime,Tagindex,Val FROM dbo.FT WHERE tagindex=0 and DateAndTime between " & DateandTimeString24H & "ORDER BY DateAndTime"
SQLCmd = New SqlCommand(Query, SQLCon)
READER = SQLCmd.ExecuteReader
While READER.Read
解决方案
您需要Dispose
所有与数据库相关的对象(连接、命令、阅读器)。最好使用Using
它而不是在Finally
.
您必须使用参数而不是字符串连接。这样你也不会失去一天的最后一秒(在 23:59:59 和第二天 00:00:00 之间)。
您可以在连接字符串中使用一个点来表示本地计算机。如果您不使用它,则
无需返回。
您可以在客户端格式化日期。TagIndex
Private Sub dgvSiteChart()
Try
Using SQLCon = New SqlConnection("Data Source=.\KVMSQL;Initial Catalog=MHA;User ID=#####;Password =######")
SQLCon.Open()
Using SQLCmd = New SqlCommand("SELECT DateAndTime,Val FROM dbo.FT WHERE tagindex=0 and DateAndTime >= @from_inclusive and DateAndTime < @to_exclusive ORDER BY DateAndTime", SQLCon)
Dim captured_date = DateTime.Today ' Because it may change if calling this around midnight
SQLCmd.Parameters.Add("@from_inclusive", SqlDbType.DateTime).Value = captured_date
SQLCmd.Parameters.Add("@to_exclusive", SqlDbType.DateTime).Value = captured_date.AddDays(1)
Using READER = SQLCmd.ExecuteReader()
While READER.Read()
chrtReportMchn.Series("LOG").Points.AddXY(CType(READER("DateAndTime"), Date).ToShortTimeString(), READER("Val"))
End While
End Using
End Using
End Using
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub
推荐阅读
- r - 为什么`difftime`带有R中其他变量的标签属性?
- python - Python:在元组列表中找到包含特定字符串的单词
- java - 您好,每次我调用存在于名为“Firstfragment”的片段中的 Spinner 时,我的应用程序都会崩溃
- netlogo - 有没有办法将文本字符串作为命令执行?
- html - 网页结构在缩放时未保持对齐
- sql-server - 如何在 SQL 查询中跳过空格
- angular - 如何在 PrimeNg 编辑器中获得 @ 提及(Angular 中的 Quill + quill-mention)
- excel - 试图从 Excel 公式中删除 FALSE 语句
- azure - 使用全局参数调试数据工厂管道时出错
- amazon-web-services - 防止未经验证的 Aws cognito 使用相同的电话号码注册多个用户