sql-server - 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
解决方案
我倾向于通过获取所需年份的第一天然后添加适当的月数来指定一个季度,例如
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
推荐阅读
- android - 您如何在 Mockito 或任何单元测试(用于覆盖)中测试布局绑定案例?
- mysql - MySQL,根据其他两个单独表中的值过滤表中的记录
- arrays - 使用 useState 更新数组
- python - 如何链接两个嵌套列表的元素?可能吗?
- postgresql - LIKE 运算符的高效 postgres 索引类型(固定结尾)
- tabulator - tabulator.js:下拉(编辑器:选择)响应不起作用?
- node.js - 最新节点 v 14.16.1 的 Angular2 Karma.config.js 错误
- google-cloud-platform - 将 SAML 属性 ForceAuthn 与 Google IdP 结合使用
- python - 如何在 Python 中解析字符串并从中获取不同的数据类型?
- typescript - 从扩展接口推断属性