Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Làm cách nào tôi có thể hiển thị tất cả thời gian giữa 2 thông số thời gian khác nhau

Sử dụng CTE và giả sử hour part of @time is zero :

declare @time time(0) = '00:15', 
        @start time(0) = '12:00', 
        @end time(0) = '15:00'

;with cte as (
    select @start sTime, dateadd(minute, datepart(minute,@time), @start) eTime
    union all
    select eTime, dateadd(minute, datepart(minute,@time), eTime)
    from cte
    where dateadd(minute, datepart(minute,@time), eTime) <= @end
)
select left(sTime,5) + ' - ' + left(eTime, 5) results 
from cte

--results
12:00 - 12:15
12:15 - 12:30
12:30 - 12:45
12:45 - 13:00
13:00 - 13:15
13:15 - 13:30
13:30 - 13:45
13:45 - 14:00
14:00 - 14:15
14:15 - 14:30
14:30 - 14:45
14:45 - 15:00


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Thiết lập xác thực 2 yếu tố

  2. Chèn toàn bộ DataTable vào cơ sở dữ liệu cùng một lúc thay vì từng hàng?

  3. 4 Mẹo để Thiết lập Cảnh báo Máy chủ SQL của Bạn

  4. Không gian được sử dụng bởi null trong cơ sở dữ liệu

  5. Sử dụng PIVOT và THAM GIA cùng nhau