Your database contains a table named SalesOrders. The table includes a DATETIME column named
OrderTime that stores the date and time each order is placed. There is a non-clustered index on the
OrderTime column.
The business team wants a report that displays the total number of orders placed on the current
day.
You need to write a query that will return the correct results in the most efficient manner.
Which Transact-SQL query should you use?
A.
SELECT COUNT(*) FROM SalesOrders
WHERE OrderTime = CONVERT(DATE, GETDATE())
B.
SELECT COUNT(*) FROM SalesOrders
WHERE OrderTime = GETDATE()
C.
SELECT COUNT(*) FROM SalesOrders
WHERE CONVERT(VARCHAR, OrderTime, 112) = CONVERT(VARCHAR, GETDATE(I, 112))
D.
SELECT COUNT(*) FROM SalesOrders
WHERE OrderTime >= CONVERT(DATE, GETDATE())
AND OrderTime < DATEADD(DAY, 1, CONVERT(DATE, GETDATE()))
‘a’ – compare datetime to date, no sense;
‘b’ – compare datetime to datetime with precision of seconds or miliseconds, no sense;
‘c’ – it would work but because of convert to varchar it is not sarg, so optimizer won;t use any of indexes.
‘d’ is correct, because it is sarg.