查询/返回日期在周日和周六之间的记录?

时间:2012-03-18 00:09:48

标签: asp.net sql vb.net

我搜索了这个网站和其他网站,但找不到这个确切的方案。我需要在我的页面中添加一个gridview,其中sqldatasource基于一个查询,该查询返回当前周的星期日和星期六之间的记录。 (每个记录都有一个日期字段)记录用于工资核算,工资核算周从星期日到星期六。我需要查找当前支付周内的所有记录。有人能指出我正确的方向开始吗?我在VB中编码。

2 个答案:

答案 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)

http://msdn.microsoft.com/en-us/library/ms186819.aspx

答案 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