Вы можете использовать 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