MW211 EXIT

devlog
MSSQL/時間を区切る
2015年06月25日
深夜残業は「22:00」以降と決まっているのだけれども
[残業開始日時]がまちまちで、[残業分]を「22:00」を境に
二つ([普通残業分]と[深夜残業分])に区切る方法。
┌──────────────────────────────────────┐
│SELECT CASE                                                                 │
│         WHEN [残業分] > DATEDIFF(MINUTE,                                   │
│                                  [残業開始日時],                           │
│                                  DATEADD(HOUR,                             │
│                                          22,                               │
│                                          CONVERT(datetime,                 │
│                                                  CONVERT(date,             │
│                                                          [残業開始日時]))))│
│         THEN                                                               │
│           DATEDIFF(MINUTE,                                                 │
│                   [残業開始日時],                                          │
│                   DATEADD(HOUR,                                            │
│                           22,                                              │
│                           CONVERT(datetime,                                │
│                                   CONVERT(date,                            │
│                                           [残業開始日時]))))               │
│         ELSE                                                               │
│           [残業分]                                                         │
│       END AS [普通残業分]                                                  │
│       CASE                                                                 │
│         WHEN [残業分] > DATEDIFF(MINUTE,                                   │
│                                  [残業開始日時],                           │
│                                  DATEADD(HOUR,                             │
│                                          22,                               │
│                                          CONVERT(datetime,                 │
│                                                  CONVERT(date,             │
│                                                          [残業開始日時]))))│
│         THEN                                                               │
│           [残業分] - DATEDIFF(MINUTE,                                      │
│                               [残業開始日時],                              │
│                               DATEADD(HOUR,                                │
│                                       22,                                  │
│                                       CONVERT(datetime,                    │
│                                               CONVERT(date,                │
│                                                       [残業開始日時]))))   │
│         ELSE                                                               │
│           0                                                                │
│       END AS [深夜残業分]                                                  │
│    FROM [表];                                                              │
└──────────────────────────────────────┘
分類:MSSQL