我正试图获得回历月
例如
如果
Time
部分小于04:00:00
,则第1天并获取该日期的月份
例如:公历日期为'2019-06-04 03:42:37.030'=回历日期为1-09-1440(dd-MM-yyyy)
期望输出
Month
-----
08 //because time is less than 4:00:00 AM
例如:公历日期为'2019-06-04 04:42:37.030'=回历日期为1-09-1440(dd-MM-yyyy)
期望输出
Month
-----
09 //because time is greater than 4:00:00 AM
其他月份的同一天
答案 0 :(得分:1)
您可以使用convert
来获取回历日期:
convert(varchar(10),<your column> ,131)
我们可以将其与case语句和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