Установите другой рабочий час, чем на самом деле время - PullRequest
0 голосов
/ 19 февраля 2019

У меня есть измерение DateTime с такими датами:

Datetime                      Date hour
--------------------------------------
2026-01-01 00:00:00.0000000       24
2025-12-31 23:00:00.0000000       23
2025-12-31 22:00:00.0000000       22
2025-12-31 21:00:00.0000000       21
2025-12-31 20:00:00.0000000       20
2025-12-31 19:00:00.0000000       19
2025-12-31 18:00:00.0000000       18
2025-12-31 17:00:00.0000000       17
2025-12-31 16:00:00.0000000       16
2025-12-31 15:00:00.0000000       15
2025-12-31 14:00:00.0000000       14
2025-12-31 13:00:00.0000000       13
2025-12-31 12:00:00.0000000       12
2025-12-31 11:00:00.0000000       11
2025-12-31 10:00:00.0000000       10
2025-12-31 09:00:00.0000000       9
2025-12-31 08:00:00.0000000       8
2025-12-31 07:00:00.0000000       7
2025-12-31 06:00:00.0000000       6
2025-12-31 05:00:00.0000000       5
2025-12-31 04:00:00.0000000       4
2025-12-31 03:00:00.0000000       3
2025-12-31 02:00:00.0000000       2
2025-12-31 01:00:00.0000000       1

Из-за системного времени мне нужно, чтобы вместо этого мои часы начинались в 6 часов, но как мне это сделать?Я мог бы создать шаблон с жестко закодированными значениями и присоединиться к нему, но должен быть более простой способ?

Желаемый результат:

Datetime                      Date hour
--------------------------------------
2026-01-01 00:00:00.0000000       19
2025-12-31 23:00:00.0000000       18
2025-12-31 22:00:00.0000000       17
2025-12-31 21:00:00.0000000       16
2025-12-31 20:00:00.0000000       15
2025-12-31 19:00:00.0000000       14
2025-12-31 18:00:00.0000000       13
2025-12-31 17:00:00.0000000       12
2025-12-31 16:00:00.0000000       11
2025-12-31 15:00:00.0000000       10
2025-12-31 14:00:00.0000000       9
2025-12-31 13:00:00.0000000       8
2025-12-31 12:00:00.0000000       7
2025-12-31 11:00:00.0000000       6
2025-12-31 10:00:00.0000000       5
2025-12-31 09:00:00.0000000       4
2025-12-31 08:00:00.0000000       3
2025-12-31 07:00:00.0000000       2
2025-12-31 06:00:00.0000000       1
2025-12-31 05:00:00.0000000       24
2025-12-31 04:00:00.0000000       23
2025-12-31 03:00:00.0000000       22
2025-12-31 02:00:00.0000000       21
2025-12-31 01:00:00.0000000       20

И для любоговопросы о том, почему я не держу DateDimension и TimeDimension.Это не может превзойти мои требования, так как у меня есть гораздо больше бизнес-правил для моих измерений даты и времени

Ответы [ 2 ]

0 голосов
/ 19 февраля 2019

На догадку ...

UPDATE YourTable
SET [Date hour] = IIF(DATEPART(HOUR,DATEADD(HOUR, -5, [datetime])) = 0,24,DATEPART(HOUR,DATEADD(HOUR, -5, [datetime]));
0 голосов
/ 19 февраля 2019

Учитывая, что ваш столбец [Date hour] уже вычислен, вы можете попробовать обновить, используя модуль:

UPDATE yourTable
SET [Date hour] = 1 + ([Date hour] + 18) % 24;

Демо

Лучшим долгосрочным решением может быть сделать ваш столбец даты и времени вычисляемым столбцом на основе исходной информации о дате и времени.Найдите ответ @Larnu для одного способа сделать это.

...