I have this T-SQL query in SSMS:
DECLARE @TodaysDate datetime
DECLARE @AsAtDate DATETIME
SET @TodaysDate = GETDATE()
PRINT (DATEPART(WEEKDAY, @TodaysDate))
IF DATEPART(WEEKDAY, @TodaysDate) = 2 -- is today Monday?
SET @AsAtDate = DATEADD(DAY, -3, @TodaysDate) -- Report contains Friday, Saturday & Sunday
ELSE
SET @AsAtDate = DATEADD(DAY, -1, @TodaysDate) -- Report contains last working day
SELECT
*
FROM
(SELECT
--app.short_id,
CONVERT(VARCHAR(11), app.created_at, 105) AS [Date Created],
CONVERT(VARCHAR(11), stat.activity_created, 105) AS [Date Updated],
FROM
Table1 app
LEFT JOIN
Table2 stat ON app.appID = stat.appID
WHERE
stat.activity_created BETWEEN @AsAtDate AND @TodaysDate) T
which doesn't seem to return any data.
but if I change:
SET @AsAtDate = DATEADD(DAY, -1, @TodaysDate)
to:
SET @AsAtDate = DATEADD(DAY, -2, @TodaysDate)
it returns some, and the supposed data that should have been returned even if I didn't have to change the code above. For context, today is September 15th, it should have returned 14th.
1条答案
按热度按时间rjzwgtxy1#
This might be helpful in demonstrating the potential issue you're seeing.
There are three
SELECT
s. The first returns values from aDATETIME
column where it's between two dates (which are implicitly converted to date times, with the time portion set to00:00:00.000
). The second uses a specific time portion in theWHERE
. Finally theDATETIME
s are cast toDATE
and compared toDATE
.You can see the difference in the results. In the first the
DATETIME
s filtered by a date don't include anything after midnight on the end date, because it's not between the two literals.When we add the time, we now get the rows expected, all the
DATETIME
s on those two days are returned.Similarly when we explicitly cast the
DATETIME
s to aDATE
and filter by date we get all the rows for both dates.| DateTime | (No column name) |
| ------------ | ------------ |
| 2023-09-15 09:32:45.210 | 2023-09-15 AND 2023-09-16 |
| 2023-09-15 10:32:45.210 | 2023-09-15 AND 2023-09-16 |
| 2023-09-15 11:32:45.210 | 2023-09-15 AND 2023-09-16 |
| 2023-09-15 12:32:45.210 | 2023-09-15 AND 2023-09-16 |
| 2023-09-15 13:32:45.210 | 2023-09-15 AND 2023-09-16 |
| 2023-09-15 14:32:45.210 | 2023-09-15 AND 2023-09-16 |
| 2023-09-15 15:32:45.210 | 2023-09-15 AND 2023-09-16 |
| 2023-09-15 16:32:45.210 | 2023-09-15 AND 2023-09-16 |
| 2023-09-15 17:32:45.210 | 2023-09-15 AND 2023-09-16 |
| 2023-09-15 18:32:45.210 | 2023-09-15 AND 2023-09-16 |
| 2023-09-15 19:32:45.210 | 2023-09-15 AND 2023-09-16 |
| 2023-09-15 20:32:45.210 | 2023-09-15 AND 2023-09-16 |
| 2023-09-15 21:32:45.210 | 2023-09-15 AND 2023-09-16 |
| 2023-09-15 22:32:45.210 | 2023-09-15 AND 2023-09-16 |
| 2023-09-15 23:32:45.210 | 2023-09-15 AND 2023-09-16 |
| 2023-09-15 09:32:45.210 | 2023-09-15 00:00:00.000 AND 2023-09-16 23:59:59.997 |
| 2023-09-15 10:32:45.210 | 2023-09-15 00:00:00.000 AND 2023-09-16 23:59:59.997 |
| 2023-09-15 11:32:45.210 | 2023-09-15 00:00:00.000 AND 2023-09-16 23:59:59.997 |
| 2023-09-15 12:32:45.210 | 2023-09-15 00:00:00.000 AND 2023-09-16 23:59:59.997 |
| 2023-09-15 13:32:45.210 | 2023-09-15 00:00:00.000 AND 2023-09-16 23:59:59.997 |
| 2023-09-15 14:32:45.210 | 2023-09-15 00:00:00.000 AND 2023-09-16 23:59:59.997 |
| 2023-09-15 15:32:45.210 | 2023-09-15 00:00:00.000 AND 2023-09-16 23:59:59.997 |
| 2023-09-15 16:32:45.210 | 2023-09-15 00:00:00.000 AND 2023-09-16 23:59:59.997 |
| 2023-09-15 17:32:45.210 | 2023-09-15 00:00:00.000 AND 2023-09-16 23:59:59.997 |
| 2023-09-15 18:32:45.210 | 2023-09-15 00:00:00.000 AND 2023-09-16 23:59:59.997 |
| 2023-09-15 19:32:45.210 | 2023-09-15 00:00:00.000 AND 2023-09-16 23:59:59.997 |
| 2023-09-15 20:32:45.210 | 2023-09-15 00:00:00.000 AND 2023-09-16 23:59:59.997 |
| 2023-09-15 21:32:45.210 | 2023-09-15 00:00:00.000 AND 2023-09-16 23:59:59.997 |
| 2023-09-15 22:32:45.210 | 2023-09-15 00:00:00.000 AND 2023-09-16 23:59:59.997 |
| 2023-09-15 23:32:45.210 | 2023-09-15 00:00:00.000 AND 2023-09-16 23:59:59.997 |
| 2023-09-16 00:32:45.210 | 2023-09-15 00:00:00.000 AND 2023-09-16 23:59:59.997 |
| 2023-09-16 01:32:45.210 | 2023-09-15 00:00:00.000 AND 2023-09-16 23:59:59.997 |
| 2023-09-16 02:32:45.210 | 2023-09-15 00:00:00.000 AND 2023-09-16 23:59:59.997 |
| 2023-09-16 03:32:45.210 | 2023-09-15 00:00:00.000 AND 2023-09-16 23:59:59.997 |
| 2023-09-16 04:32:45.210 | 2023-09-15 00:00:00.000 AND 2023-09-16 23:59:59.997 |
| 2023-09-16 05:32:45.210 | 2023-09-15 00:00:00.000 AND 2023-09-16 23:59:59.997 |
| 2023-09-16 06:32:45.210 | 2023-09-15 00:00:00.000 AND 2023-09-16 23:59:59.997 |
| 2023-09-16 07:32:45.210 | 2023-09-15 00:00:00.000 AND 2023-09-16 23:59:59.997 |
| 2023-09-16 08:32:45.210 | 2023-09-15 00:00:00.000 AND 2023-09-16 23:59:59.997 |
| 2023-09-16 09:32:45.210 | 2023-09-15 00:00:00.000 AND 2023-09-16 23:59:59.997 |
| 2023-09-16 10:32:45.210 | 2023-09-15 00:00:00.000 AND 2023-09-16 23:59:59.997 |
| 2023-09-16 11:32:45.210 | 2023-09-15 00:00:00.000 AND 2023-09-16 23:59:59.997 |
| 2023-09-16 12:32:45.210 | 2023-09-15 00:00:00.000 AND 2023-09-16 23:59:59.997 |
| 2023-09-16 13:32:45.210 | 2023-09-15 00:00:00.000 AND 2023-09-16 23:59:59.997 |
| 2023-09-16 14:32:45.210 | 2023-09-15 00:00:00.000 AND 2023-09-16 23:59:59.997 |
| 2023-09-16 15:32:45.210 | 2023-09-15 00:00:00.000 AND 2023-09-16 23:59:59.997 |
| 2023-09-16 16:32:45.210 | 2023-09-15 00:00:00.000 AND 2023-09-16 23:59:59.997 |
| 2023-09-16 17:32:45.210 | 2023-09-15 00:00:00.000 AND 2023-09-16 23:59:59.997 |
| 2023-09-16 18:32:45.210 | 2023-09-15 00:00:00.000 AND 2023-09-16 23:59:59.997 |
| 2023-09-16 19:32:45.210 | 2023-09-15 00:00:00.000 AND 2023-09-16 23:59:59.997 |
| 2023-09-16 20:32:45.210 | 2023-09-15 00:00:00.000 AND 2023-09-16 23:59:59.997 |
| 2023-09-16 21:32:45.210 | 2023-09-15 00:00:00.000 AND 2023-09-16 23:59:59.997 |
| 2023-09-16 22:32:45.210 | 2023-09-15 00:00:00.000 AND 2023-09-16 23:59:59.997 |
| 2023-09-16 23:32:45.210 | 2023-09-15 00:00:00.000 AND 2023-09-16 23:59:59.997 |
| 2023-09-15 00:00:00.000 | 2023-09-15 AND 2023-09-16 |
| 2023-09-15 00:00:00.000 | 2023-09-15 AND 2023-09-16 |
| 2023-09-15 00:00:00.000 | 2023-09-15 AND 2023-09-16 |
| 2023-09-15 00:00:00.000 | 2023-09-15 AND 2023-09-16 |
| 2023-09-15 00:00:00.000 | 2023-09-15 AND 2023-09-16 |
| 2023-09-15 00:00:00.000 | 2023-09-15 AND 2023-09-16 |
| 2023-09-15 00:00:00.000 | 2023-09-15 AND 2023-09-16 |
| 2023-09-15 00:00:00.000 | 2023-09-15 AND 2023-09-16 |
| 2023-09-15 00:00:00.000 | 2023-09-15 AND 2023-09-16 |
| 2023-09-15 00:00:00.000 | 2023-09-15 AND 2023-09-16 |
| 2023-09-15 00:00:00.000 | 2023-09-15 AND 2023-09-16 |
| 2023-09-15 00:00:00.000 | 2023-09-15 AND 2023-09-16 |
| 2023-09-15 00:00:00.000 | 2023-09-15 AND 2023-09-16 |
| 2023-09-15 00:00:00.000 | 2023-09-15 AND 2023-09-16 |
| 2023-09-15 00:00:00.000 | 2023-09-15 AND 2023-09-16 |
| 2023-09-16 00:00:00.000 | 2023-09-15 AND 2023-09-16 |
| 2023-09-16 00:00:00.000 | 2023-09-15 AND 2023-09-16 |
| 2023-09-16 00:00:00.000 | 2023-09-15 AND 2023-09-16 |
| 2023-09-16 00:00:00.000 | 2023-09-15 AND 2023-09-16 |
| 2023-09-16 00:00:00.000 | 2023-09-15 AND 2023-09-16 |
| 2023-09-16 00:00:00.000 | 2023-09-15 AND 2023-09-16 |
| 2023-09-16 00:00:00.000 | 2023-09-15 AND 2023-09-16 |
| 2023-09-16 00:00:00.000 | 2023-09-15 AND 2023-09-16 |
| 2023-09-16 00:00:00.000 | 2023-09-15 AND 2023-09-16 |
| 2023-09-16 00:00:00.000 | 2023-09-15 AND 2023-09-16 |
| 2023-09-16 00:00:00.000 | 2023-09-15 AND 2023-09-16 |
| 2023-09-16 00:00:00.000 | 2023-09-15 AND 2023-09-16 |
| 2023-09-16 00:00:00.000 | 2023-09-15 AND 2023-09-16 |
| 2023-09-16 00:00:00.000 | 2023-09-15 AND 2023-09-16 |
| 2023-09-16 00:00:00.000 | 2023-09-15 AND 2023-09-16 |
| 2023-09-16 00:00:00.000 | 2023-09-15 AND 2023-09-16 |
| 2023-09-16 00:00:00.000 | 2023-09-15 AND 2023-09-16 |
| 2023-09-16 00:00:00.000 | 2023-09-15 AND 2023-09-16 |
| 2023-09-16 00:00:00.000 | 2023-09-15 AND 2023-09-16 |
| 2023-09-16 00:00:00.000 | 2023-09-15 AND 2023-09-16 |
| 2023-09-16 00:00:00.000 | 2023-09-15 AND 2023-09-16 |
| 2023-09-16 00:00:00.000 | 2023-09-15 AND 2023-09-16 |
| 2023-09-16 00:00:00.000 | 2023-09-15 AND 2023-09-16 |
| 2023-09-16 00:00:00.000 | 2023-09-15 AND 2023-09-16 |