sql >> Databasteknik >  >> RDS >> Sqlserver

SQL Server Spårning Schemalagda skift när dagen varierar

Följande vevar ut en tabell över skift. Det är inte exakt klart vad du vill göra, men du bör kunna omvänd konstruera för att bestämma skiftet från datum/tid för en händelse med hjälp av några av beräkningarna som visas här.

REDIGERA :Korrigerad case att hantera till 2/2/3/2 mönster.

; with Samples as (
  -- Start at the beginning of 2013.
  select Cast( '01-01-2013 00:00' as DateTime ) as Sample
  union all
  -- Add hours up to the desired end date.
  select DateAdd( hour, 1, Sample )
    from Samples
    where Sample <= '2013-01-30'
  ),
  ExtendedSamples as (
  -- Calculate the number of days since the beginning of the first shift on 1/1/2013.
  select Sample, DateDiff( hour, '01-01-2013 07:00', Sample ) / 24 as Days
    from Samples ),
  Shifts as (
  -- Calculate the shifts for each day.
  select *,
    case when ( Days + 1 ) % 9 in ( 0, 1, 4, 5 ) then 'C/D' else 'A/B' end as Shifts
    from ExtendedSamples )
  select *,
    case when DatePart( hour, Sample ) between 7 and 18 then Substring( Shifts, 1, 1 ) else Substring( Shifts, 3, 1 ) end as Shift
    from Shifts
    option ( maxrecursion 0 )


  1. samling av poster till ut sys_refcursor

  2. Korrekt sätt att ställa in MYSQL-databas för relaterade taggsökningar?

  3. Hur OCT() fungerar i MariaDB

  4. Jämför 2 tabeller i sql