【问题标题】:VB.net MYSQL - Count Seconds in Database between 2 timesVB.net MYSQL - 计算数据库中的秒数 2 次
【发布时间】:2014-08-27 14:13:13
【问题描述】:

您好,我在使用 vb.net 时遇到了一点问题,不知道该往哪个方向发展。

程序的前端用于统计某个进程的某个停机时间的秒数。

数据库有下表,以及一个示例数据:

  • 状态 |开始日期 |停止日期 |秒


  • 运行 27/08/2012 11:10:11 27/08/2012 11:10:22 11

  • 运行 27/08/2012 11:10:11 27/08/2012 11:10:22 11
  • 运行 27/08/2012 12:14:27 27/08/2012 12:14:57 30

在后端,我试图做的就是使用日期选择器为日期填充秒总和的标签,并且在进行查询时,我使用日期选择器文本并将时间添加到它的末尾,以毫不奇怪,它不起作用,它也只考虑开始日期,但不考虑停止日期,因为我试图在那个时间范围内加起来,我希望有人能提供帮助,这是我在下面尝试的代码:

Dim DTimePicker1 = DateTimePicker1.text & " 11:00:00"
        Dim DTimePicker2 = DateTimePicker1.text & " 12:00:00"

        cmd.Parameters.Clear()
        cmd.CommandText = "SELECT SUM(seconds) FROM sqlccmlinestatus WHERE status = 'Running' and startdate BETWEEN @BEG AND @END"
        cmd.Parameters.AddWithValue("@BEG", DTimePicker1)
        cmd.Parameters.AddWithValue("@END", DTimePicker1)
        Label70.Text = cmd.ExecuteScalar()

任何帮助都会很棒。

非常感谢, 皮特

【问题讨论】:

  • 如果您希望"SELECT SUM(seconds)... 或 BETWEEN 工作,首先使用数字(long/int)作为 dbcolumn,然后存储数字而不是文本;但总结几秒钟的不同记录似乎值得怀疑

标签: mysql sql vb.net visual-studio-2012


【解决方案1】:
Dim D1 as Date = DateTimePicker1.Value
Dim D2 as Date = DateTimePicker2.Value
Dim DTimePicker1 as new Date(D1.Year, D1.Month, D1.Day, 11, 0, 0)
Dim DTimePicker2 as new Date(D2.Year, D2.Month, D2.Day, 12, 0, 0)
cmd.Parameters.Clear()
cmd.CommandText = "SELECT SUM(seconds) FROM sqlccmlinestatus WHERE status = 'Running' and startdate BETWEEN @BEG AND @END"
cmd.Parameters.AddWithValue("@BEG", DTimePicker1.ToString("yyyy-MM-dd HH:mm:ss.fff"))
cmd.Parameters.AddWithValue("@END", DTimePicker2.ToString("yyyy-MM-dd HH:mm:ss.fff"))
Label70.Text = cmd.ExecuteScalar()

【讨论】:

  • 您好,感谢您的回复,收到错误消息:将 nvarchar 数据类型转换为 datetime 数据类型导致值超出范围。
  • 将 nvarchar 数据类型转换为 datetime 数据类型导致值超出范围。
  • 我已经更改了答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-16
  • 1970-01-01
  • 1970-01-01
  • 2014-08-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多