Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Pelacakan SQL Server Pergeseran Terjadwal ketika hari bervariasi

Berikut ini adalah tabel shift. Tidak jelas apa yang ingin Anda lakukan, tetapi Anda harus dapat merekayasa balik menentukan pergeseran dari tanggal/waktu suatu peristiwa menggunakan beberapa perhitungan yang ditampilkan di sini.

EDIT :Koreksi case untuk menangani pola 2/2/3/2.

; 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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cache paket SQL Server 2008 hampir selalu kosong

  2. Pencarian String Wildcard Trigram di SQL Server

  3. Apakah pernyataan SQL Server tunggal atom dan konsisten?

  4. Apa perbedaan antara menggunakan gabungan silang dan memberi koma di antara dua tabel?

  5. Dapatkan kembali ruang di database SQL Server 2005 saat menjatuhkan tabel secara permanen