我正在撰写此查询:
SELECT
DATEADD(wk, DATEDIFF(wk, 0, vr_EmployeeLog.DateTimeStart), 0) period_start,
DATEADD(wk, DATEDIFF(wk, 0, vr_EmployeeLog.DateTimeStart), 6) period_end
FROM
vr_EmployeeLog
我得到了结果:
period_start 2015-10-12 00:00:00.000
period end 2015-10-18 00:00:00.000
但是我在2015-10-18 01:56:00.000 AM获得了记录,并且不包含在结果中。
我怎样才能做到这一点?
答案 0 :(得分:0)
尝试使用数天而不是数周。
SELECT
DATEADD(wk,DATEDIFF(wk,0,vr_EmployeeLog.DateTimeStart),0) period_start,
DATEADD(day,DATEDIFF(day,0,vr_EmployeeLog.DateTimeStart),7) period_end
FROM vr_EmployeeLog
但要通过"日期范围选择数据"使用大于或等于然后(第二天)
的组合SELECT *
FROM vr_EmployeeLog
WHERE vr_EmployeeLog.DateTimeStart >= '20151012'
AND vr_EmployeeLog.DateTimeStart < '20151019' --<< "the next day"
不要试图在&#34;之间使用&#34;为此,请始终使用&gt; =和&lt;
日期和时间范围的最佳做法是避免BETWEEN和 总是使用表格:
WHERE col&gt; =&#39; 20120101&#39; AND col&lt; &#39; 20120201&#39;此表单适用于所有人 类型和所有精度,无论时间部分是什么 适用。
也
答案 1 :(得分:0)
我认为你应该尝试:
SELECT
DATEADD(wk,DATEDIFF(wk,0,DateTimeStart),0) period_start,
DATEADD(day, 6, DATEADD(wk,DATEDIFF(wk,0,DateTimeStart),0)) period_end
FROM vr_EmployeeLog
--ADD 6 days into period_start