【问题标题】:How to get Hijri month based on time in SQL Server?如何在 SQL Server 中根据时间获取回历月份?
【发布时间】:2019-06-12 19:59:26
【问题描述】:

我正在尝试获得回历月份

例如

如果Time 部分小于04:00:00,则Day-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

其他同一天的月份

【问题讨论】:

    标签: sql sql-server date datetime hijri


    【解决方案1】:

    您可以使用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)来提取您的月份。 (Extract 等不适用于这种日期格式。)

    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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-09-07
      • 1970-01-01
      • 2020-05-11
      • 1970-01-01
      • 1970-01-01
      • 2011-01-04
      • 2023-03-22
      • 1970-01-01
      相关资源
      最近更新 更多