【发布时间】:2015-09-04 21:05:14
【问题描述】:
我在弄清楚如何编写看起来非常简单的查询时遇到了一些麻烦。
问题出在我的WHERE 子句中。我的表中有两个字段。任务开始时的时间戳startTime 和任务完成时的时间戳endTime/ 这两个字段都是Datetime。
在我的 UI 中,我允许此人选择 Start Date 和 End Date 及其过滤选项。
日期逻辑应该如下:
StartTime 是 >= @startDate 但 < @endDate 和 EndTime 是 <=@endDate 但 > @startDate 的所有内容。
我在数据库中使用单个日期之前已经完成了日期范围,但没有使用多个日期,所以我很困惑。
有什么想法吗?
-- Fetch our data
SELECT [recordID],
[ItemID],
[QID],
[NTID],
[EmpID],
[FirstName],
[LastName],
[SupQID],
[SupEmpID],
[SupFirstName],
[SupLastName],
[Location],
[Department],
[Skillset],
[BudgetMarket],
CONVERT (VARCHAR (20), [startTime], 100) AS startTime,
CONVERT (VARCHAR (20), [endTime], 100) AS endTime,
COALESCE (DATEDIFF(SECOND, startTime, endTime), 0) AS totalTimeSeconds
FROM itemTracker_records
WHERE (@employee IS NULL OR (QID = @employee))
AND (@supervisor IS NULL OR (supQID = @supervisor))
AND CAST(endTime as Date) >= @startDate AND CAST(endTime as Date) < @endDate
FOR XML PATH ('results'), TYPE, ELEMENTS, ROOT ('root');
【问题讨论】:
-
抱歉,我们帮不上忙。也许下次吧。
标签: sql-server tsql stored-procedures sql-server-2012