Как получить Hijri месяц в зависимости от времени в SQL Server? - PullRequest
1 голос
/ 12 июня 2019

Я пытаюсь получить месяц хиджры

Например

если Time часть меньше 04:00:00, тогда Day-1 и получить месяц с этой датой

Пример: григорианская дата '2019-06-04 03: 42: 37,030' = дата хиджры 1-09-1440 (дд-мм-гггг)

Ожидаемый результат

Month
-----
  08   //because time is less than 4:00:00 AM

Пример: григорианская дата '2019-06-04 04: 42: 37.030' = дата хиджры 1-09-1440 (дд-мм-гггг)

Ожидаемый результат

Month
-----
  09   //because time is greater than 4:00:00 AM

Остальное в тот же день месяца

1 Ответ

1 голос
/ 13 июня 2019

Вы можете использовать convert, чтобы получить дату хиджры:

convert(varchar(10),<your column> ,131)

Мы можем объединить это с заявлением о кейсе и dateadd для обработки вашего требования времени.

case when cast(<your column> as time) < '04:00:00'
then convert(varchar(10),dateadd(day,-1,<your column>),131)
else 
convert(varchar(10),<your column>) end

Наконец, вы можете использовать подстроку (и patindex), чтобы вывести ваш месяц. (Извлечение и такие не работают с этим форматом даты.)

select
substring(
  derived_hijri_date,
  patindex('%[/]%', derived_hijri_date) + 1,
  2)
from
(
select
 case when cast(<your column> as time) < '04:00:00'
  then convert(varchar(10),dateadd(day,-1,<your column>),131)
 else 
  convert(varchar(10),<your column>,131) end as derived_hijri_date
from
 <your table>
) t

Fiddle

...