SQL time query from 6pm at night to 6am

sql, sql-server, sql-server-2008

Solution

I think this may be all that you're looking for. It removes any seconds from the GETDATE() call and adds the appropriate amount of hours to it.

SELECT COUNT(barcode)
FROM table1
WHERE timestamp >= DATEADD(HOUR,18,CONVERT(VARCHAR(10), GETDATE(),110))
  AND timestamp <= DATEADD(HOUR,6,CONVERT(VARCHAR(10), GETDATE()+1,110))

SQL Fiddle Demo

Problem

How to count number of records after 6 at night and 6 in the morning? This works until 12pm. ``` SELECT distinct count(barcode) c FROM table1 where DAY(timestamp) = DAY(GETDATE()) AND MONTH(timestamp) = MONTH(GETDATE()) AND YEAR(timestamp) = YEAR(GETDATE()) AND datepart(hh,timestamp) >= 18 AND datepart(hh,timestamp) >= 6; ```

Original source

Related problems