首页 > 解决方案 > Visual Studio 中的时间间隔

问题描述

我正在寻求您的帮助,以便在我的小项目中获得“季度”。

我的 VB.NET 项目是公司的“日常工作”。我正在使用 Visual Studio 2010 - Windows 应用程序 - SQL Server 2012,我想查看“第一季度、第二季度……等”一年中发生的“工作”。从网格视图中的组合框中选择。

请帮忙

====下面的代码是我试图执行的函数====

Public Sub Load_WorkDayTable_By_period(ByVal DateWork As Date)
    WorkDayTable.Clear()
    Dim cmd As New SqlCommand(" select (@DateWork % 100 - 1) / 3 + 1 as [Quarter] From WorkDayTable ", connSQLServer) 
   
    cmd.Parameters.Add("DateWork", SqlDbType.Date).Value = DateWork
   
    connSQLServer.Open()
    WorkDayTable.Load(cmd.ExecuteReader)
    connSQLServer.Close()
    cmd = Nothing
End Sub

==========这是调用函数的子

Private Sub Com_viewper_SelectedIndexChanged(sender As System.Object, e As System.EventArgs) Handles Com_viewper.SelectedIndexChanged
    If Com_viewper.SelectedItem = "الربع الأول" Then

        load_WorkDayTable()
        Load_WorkDayTable_By_period(Com_viewper.SelectedValue)
        DataGridView1.DataSource = WorkDayTable
        With DataGridView1
            .DataSource = WorkDayTable
            .Columns("EmpName").HeaderText = "اسم الشركة"
            .Columns("EmpName").Width = 150
            .Columns("Workk").HeaderText = "الموظف"
            .Columns("Workk").Width = 100
            .Columns("DateWork").HeaderText = "رقم الهاتف"
            .Columns("DateWork").Width = 100
            .Columns("NoteWork").HeaderText = "البريد الالكتروني"
            .Columns("NoteWork").Width = 100
            .Columns("WorkNum").HeaderText = "رقم العمل"
            .Columns("WorkNum").Width = 100
            .Columns("flagg").HeaderText = "مؤشر"
            .Columns("flagg").Width = 120
            .Columns("EmpNum").HeaderText = "رقم الموظف"
            .Columns("EmpNum").Width = 120
            .Columns("Worki").HeaderText = "عمل"
            .Columns("Worki").Width = 100
            .Columns("Workii").HeaderText = "عمل"
            .Columns("Workii").Width = 100
            .Columns("Workc").HeaderText = "عمل"
            .Columns("Workc").Width = 100
            .Columns("Workcc").HeaderText = "عمل"
            .Columns("Workcc").Width = 100
            .Columns("WorkD").HeaderText = "عمل"
            .Columns("WorkD").Width = 100
        End With

    End If
End Sub

标签: sql-servervb.nettime

解决方案


我倾向于通过获取所需年份的第一天然后添加适当的月数来指定一个季度,例如

Private Function GetRecordsByQuarter(year As Integer, quarter as Integer) As DataTable
    Dim firstDayOfYear As New Date(year, 1, 1)
    Dim inclusiveStartDate = firstDayOfYear.AddMonths(3 * (quarter - 1))
    Dim exclusiveEndDate = inclusiveStartDate.AddMonths(3)

    Using adapter As New SqlDataAdapter("SELECT * FROM MyTable WHERE CreatedDate >= @StartDate AND CreatedDate < @EndDate",
                                        connectionString)
        With adapter.SelectCommand.Parameters
            .Add("@StartDate", SqlDbType.DateTime2).Value = inclusiveStartDate
            .Add("@EndDate", SqlDbType.DateTime2).Value = exclusiveEndDate
        End With

        Dim table As New DataTable

        adapter.Fill(table)

        Return table
    End Using
End Function

推荐阅读