我搜索了这个网站和其他网站,但找不到这个确切的方案。我需要在我的页面中添加一个gridview,其中sqldatasource基于一个查询,该查询返回当前周的星期日和星期六之间的记录。 (每个记录都有一个日期字段)记录用于工资核算,工资核算周从星期日到星期六。我需要查找当前支付周内的所有记录。有人能指出我正确的方向开始吗?我在VB中编码。
答案 0 :(得分:1)
这是一个SQL问题,因此您应该使用dbms相应地标记它。
假设您正在使用SQL-Server,DATEPART
可用于将工作日作为int
字段的datetime
,而DATENAME
可用于获取工作日的名称。
例如(假设周日至周六实际上意味着从周一到周五):
SELECT t.*
FROM YourTable t
WHERE DATEPART(weekday, YourDateField) BETWEEN 2 AND 6
请注意depends on regional settings这是一周的第一天。
修改:如果您想从当周选择记录。
SELECT t.*
FROM YourTable t
WHERE YourDateField >= DATEADD(DAY, DATEDIFF(DAY, 0, GETDATE()) / 7 * 7, 0)
AND YourDateField < DATEADD(DAY, DATEDIFF(DAY, -1, GETDATE()), 0)
答案 1 :(得分:0)
我想你正在寻找一种方法来获得员工在两个日期之间的工作时间 (从周日到周六)。您需要今天星期日之前的确切日期。 这可以通过此功能
完成Public Function FirstWeekDay(d as DateTime) As DateTime
While(d.DayOfWeek <> DayOfWeek.Sunday)
d.AddDays(-1)
End While
return d
End Function
返回的日期是您的startDate,而您的endDate取决于您要停止搜索的位置 根据你的问题,这个日期是下周六。只需在startDate中添加6天即可。 现在只需将正确的参数传递给query / storedprocedure:
SELECT w.* FROM workTime w WHERE w.empID = @empID AND w.workDate BETWEEN @startDate AND @endDate