sql >> Database >  >> RDS >> Sqlserver

SQL Server Tracking Geplande Shifts wanneer de dag varieert

Het volgende geeft een tabel met ploegendiensten weer. Het is niet precies duidelijk wat u wilt doen, maar u zou de verschuiving van de datum/tijd van een gebeurtenis moeten kunnen reverse-engineeren met behulp van enkele van de hier getoonde berekeningen.

BEWERKEN :case gecorrigeerd te verwerken tot 2/2/3/2 patroon.

; 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. Android-fout:waarde <br van het type java.lang.String kan niet worden geconverteerd naar JSONObject

  2. Hoe gegevens van mysql weergeven met behulp van angular.js PHP?

  3. Is het mogelijk om de query te optimaliseren met behulp van de EXISTS in plaats van de IN-clausule met DISTINCT

  4. MYSQL laatste login en aantal logins in laatste 3 maanden