代码之家  ›  专栏  ›  技术社区  ›  syed mohsin

试图获取回历年的最后一天,导致我的查询附加了转换错误

  •  0
  • syed mohsin  · 技术社区  · 6 年前

    我想知道回历的最后一天,

    首先,我要定义我的查询和逻辑, 这个查询获取我的回历日期。

    SELECT top 1 convert(date,dateHijri,103) , datepart(year,try_convert(date,dateHijri,103))
    from Item
    

    它给了我结果,

    1440-07-19 , 1440
    

    此查询获取格鲁吉亚日历的最后日期,

     select top 1 DATEADD(MILLISECOND, -3,DATEADD(YEAR, DATEDIFF(YEAR, 0, GETDATE()) + 1, 0)) 'Last Day of Georgian Year'
    
    Result :  2018-12-31 23:59:59.997
    

    现在,我的最后一个查询,我试图得到回历年的最后一天,尝试Merg第一个和第二个查询,

    select top 1 DATEADD(MILLISECOND, -3,DATEADD(YEAR, DATEDIFF(YEAR, 0, convert(date,dateHijri,103)) + 1, 0)) as 'Last Day of Hijri Year'  from Item 
    
    Error:The conversion of a date data type to a datetime data type resulted in an out-of-range value.
    

    希望你的建议谢谢

    1 回复  |  直到 6 年前
        1
  •  1
  •   Serkan Arslan    6 年前

    你可以试试这个

    select top 1 DATEADD(MILLISECOND, -3, CONVERT(DATETIME, CONVERT(VARCHAR(4), YEAR(convert(date,dateHijri,103)) + 1)+'0101', 131)) as 'Last Day of Hijri Year'  from Item